memset bzero性能测试 ltrace strace命令用法 kprobe技术介绍
- 2016-10-30 11:59:00
- admin
- 原创 2975
一、memset和bzero性能测试
1、void bzero(void *s, size_t n),位于strings.h;
2、void *memset(void *s, int c, size_t n),位于string.h;
3、bzero已经废弃,建议使用memset;
4、压测代码:memset_perf.cpp
5、压测方法:./memset_perf start_sleep_time loop_count block_size
calcMalloc性能数据(./memset_perf 3 10000 `expr 1024 \* 1024 \* 2`):
CLOCKS_PER_SECOND is 1000000.
cost is 730000, average is 0.000073.
CLOCKS_PER_SECOND is 1000000.
cost is 770000, average is 0.000077.
CLOCKS_PER_SECOND is 1000000.
cost is 700000, average is 0.000070.
性能结论:1000次malloc和free大概73微秒。
calcMemset性能数据(./memset_perf 3 10000 `expr 1024 \* 1024 \* 2`):
CLOCKS_PER_SECOND is 1000000.
cost is 39460000, average is 0.001315.
CLOCKS_PER_SECOND is 1000000.
cost is 14910000, average is 0.001491.
CLOCKS_PER_SECOND is 1000000.
cost is 11620000, average is 0.001162.
性能结论:memset初始化4M数据大概1200微秒。
二、ltrace和strace命令用法
1、ltrace用于追踪库函数调用,-p参数用于指定跟踪进程PID,-c参数用于计数和汇总;
2、strace用于追踪系统调用和信号,-p参数用于指定跟踪进程PID,-c参数用于计数和汇总;
ltrace使用示例:
ltrace -c uptime
ltrace -c -p 26758
strace使用示例:
strace -c uptime
strace -c -p 26758
三、kprobe技术介绍
kprobe内核调试技术可以对绝大多数系统调用函数动态插入探测点,收集所需的调试信息,而不影响原来函数的执行。