CSDN博客

img haiheng

12、常用函数和循环语句中的被计算量

发表于2004/10/12 0:24:00  708人阅读

分类: [原气弹]研究院

—————————————————
看一下下面这个例子:

    for( i=0; i<1000; i++ ){
        GetLocalHostName( hostname );
        ...
    }
   
GetLocalHostName的意思是取得当前计算机名,在循环体中,它会被调用1000次啊。这是多么的没有效率的事啊。应该把这个函数拿到循环体外,这样只调用一次,效率得到了很大的提高。虽然,我们的编译器会进行优化,会把循环体内的不变的东西拿到循环外面,但是,你相信所有编译器会知道哪些是不变的吗?我觉得编译器不可靠。最好还是自己动手吧。

同样,对于常用函数中的不变量,如:

GetLocalHostName(char* name)
{
    char* funcName = "GetLocalHostName";
   
    sys_log( "%s begin......", funcName );
    ...
    sys_log( "%s end......", funcName );
}

如果这是一个经常调用的函数,每次调用时都要对funcName进行分配内存,这个开销很大啊。把这个变量声明成static吧,当函数再次被调用时,就会省去了分配内存的开销,执行效率也很好。
阅读全文
0 0

相关文章推荐

img
取 消
img