有时候用一个C程序来模拟一些使用大量静态内存的东西是很方便的。 我注意到,在转换到Fedora 15之后,程序花了很长时间来编译。 我们正在谈论30s与0.1s。 更奇怪的是,ld(链接器)正在耗尽CPU,慢慢地开始占用所有可用的内存。 经过一番捣鼓,我设法find了这个新问题和我的交换文件的大小之间的关系。 以下是本次讨论的示例程序: #include <string.h> #include <stdlib.h> #include <stdio.h> #define M 1000000 #define GIANT_SIZE (200*M) size_t g_arr[GIANT_SIZE]; int main( int argc, char **argv){ int i; for(i = 0; i<10; i++){ printf("This should be zero: %d\n",g_arr[i]); } exit(1); } 这个程序有一个巨大的数组,声明的大小约为200 * 8MB = 1.6GB的静态内存。 编译这个程序需要花费过多的时间: [me@bleh]$ time gcc HugeTest.c real 0m12.954s user […]
我发现这个代码交换两个数字,而不使用第三个variables,使用XOR ^运算符。 码: int i = 25; int j = 36; j ^= i; i ^= j; j ^= i; Console.WriteLine("i:" + i + " j:" + j); //numbers Swapped correctly //Output: i:36 j:25 现在我将上面的代码改为这个等效的代码。 我的代码: int i = 25; int j = 36; j ^= i ^= j ^= i; // I have changed […]