这几天在分析一个性能未达预期的功能,使用gperftools cpu profiler生成后,使用pprof格式化的时候,发现pprof出的结果函数名未翻译.为函数地址,如下所示: 每个节点代表一个函数,节点数据格式: Class Name Method Name local (percentage) #不包含内部其他函数调用所消耗的CPU时间(内联函数除外) of cumulative (percentage) #整个函数消耗的CPU时间,包括函数内部其他函数调用所消耗的CPU时间,如果与lo…
参考资料 实现代码保存在我的github // input flag 1:FunName 2:CallerFunName func GetFuncName(flag int) string {     if flag != 1 && flag != 2 {     }     pc, _, _, _ := Caller(flag)     return FuncForPC(pc).Name() } 测试代码 func main() {     test() } func test{    …
void TestFunc() { } int _tmain(int argc, _TCHAR* argv[]) { cout<<TestFunc<<endl; cout<<&TestFunc<<endl; cout<<*TestFunc<<endl; cout<<*******TestFunc<<endl; } 可以看到输出的结果均为,函数名地址.这些操作在使用的时候,没有任何区别,可能更好的帮助大家…
参照刘汝佳的trie树 结构体 #include "stdio.h" #include "stdlib.h" #include "string.h" #include "malloc.h" /** *** 连接字符串和字符 **/ char* strcatch(char *str, char ch) { char *p = str; while (*p!='\0') { p++; } *p = ch; *(p+) = '\0'…
一 函数名的使用 python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为值返回,叫第一类对象.其他语言功能有限 1.1 函数名是个特殊的变量,可以当做变量赋值 def func(): print("有志者,事竟成,破釜沉舟,百二秦关终属楚") res = 4+3j res = func # res() = func() # 把func当成变量赋值给res ,此刻res也成为了函数,调用函数需要在res后面加上() res() 执行 [root@node10 python]…
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------code: def FunAddOne(num) : '单行函数文档' return (num+1) def FunAddTwo() : """ 多行的函数文档 很多行哦 """ print(FunAddOne.__doc__) print(…
function myfunction(msg) print("this is msg fun " .. msg); end local fun =_G["myfunction"]; if fun then fun("is ok"); end…
funcs = ['fetch_data_' + i for i in ( 'activities', 'banners', 'server_list')]# from operator import methodcaller# f=lambda fn:methodcaller(fn)(self)f = lambda fn: getattr(self, fn)()…
调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法. 1.__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈, 2._cdecl是C和C++程序的缺省调用方式.每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大.函数采用…
函数名的本质 函数名实质上就是函数的内存地址 def wrapper(): pass print(wrapper) 1.引用是什么? 当我们定义a=1的时候,系统会开辟一块内存空间来保存1,然后用a变量名保存1所在的内存地址引用,变量名就好像C语言中的指针,大家可以把引用理解成地址,a里面存的是1这个数值所在的地址,a存了1的引用. 当我们在代码中定义了一个函数,系统会分配一块内存空间,用于保存函数体的内部变量和函数名,这个wrapper只是一个变量名,保存了函数内存中的地址,我们可以x = w…