Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux分配指针值和性能_Linux_Performance_Pointers_Memory Management_Malloc - Fatal编程技术网

Linux分配指针值和性能

Linux分配指针值和性能,linux,performance,pointers,memory-management,malloc,Linux,Performance,Pointers,Memory Management,Malloc,我对linux上的分配(Redhat5和6,在intel/amd cpu上运行是相同的)及其相关性能感到有点困惑。 下面是分配和释放双数组的简单代码,只需查看地址值。按1 Kb的块从0分配到256Mb #include <stdio.h> #include <stdlib.h> int main( int argc , char ** argv ) { #define ASZ 33661057 size_t len ; double * ptr ;

我对linux上的分配(Redhat5和6,在intel/amd cpu上运行是相同的)及其相关性能感到有点困惑。 下面是分配和释放双数组的简单代码,只需查看地址值。按1 Kb的块从0分配到256Mb

#include <stdio.h>
#include <stdlib.h>

int main( int argc , char ** argv )
{
#define ASZ 33661057   

  size_t len ;

  double * ptr ;

  for ( len = 128 ; len < ASZ ; len += 128  )
  {
    ptr = malloc( len ) ;
    printf( "ptr addr : %p len %12ld %8.1f Kb\n" , ptr , len , ( (double ) len ) * 8. / 1024. ) ;
    free( ptr ) ;
  }

  return( 0 ) ;
}
我不明白以下几点:

  • 为什么在某些尺寸下,地址值会发生变化,并且更大
  • 为什么在分配大小超过256MB时,总是出现大地址
与这些准则有关的问题和我的主要问题:

  • 为什么具有较小地址的阵列能够更快地访问其数据? 快20%
有什么线索吗


提前感谢您的帮助。

请阅读有关虚拟内存和延迟分配的内容。
ptr addr : 0xadb010 len          128      1.0 Kb
ptr addr : 0xadb010 len          256      2.0 Kb
ptr addr : 0xadb010 len       135040   1055.0 Kb
ptr addr : 0x2ab1eef4c010 len       135168   1056.0 Kb
ptr addr : 0xadb010 len       135296   1057.0 Kb
ptr addr : 0xadb010 len       270208   2111.0 Kb
ptr addr : 0x2ab1eef4c010 len       270336   2112.0 Kb
ptr addr : 0xadb010 len       270464   2113.0 Kb
ptr addr : 0xadb010 len       405376   3167.0 Kb
ptr addr : 0x2ab1eef4c010 len       405504   3168.0 Kb
ptr addr : 0xadb010 len       405632   3169.0 Kb
ptr addr : 0xadb010 len     33656576 262942.0 Kb
ptr addr : 0xadb010 len     33656704 262943.0 Kb
ptr addr : 0x2ab1eef4c010 len     33656832 262944.0 Kb
ptr addr : 0x2ab1eef4c010 len     33656960 262945.0 Kb