c++内存分配的奇怪减速



谁能告诉我为什么会发生以下情况:

我有两台电脑:

  1. my working comp
  2. 服务器

我维护c++程序(msvc 2005 c++编译),工作太慢,只在服务器上,但不是在我的公司。

我进行了测量(GetThreadTimes等)并且可以肯定地说,狭小的地方——它的内存分配(新/malloc)。它只发生在服务器上!

我可以声称它的发生是由于内存碎片,因为程序的第一次服务器实例工作正常,它开始失去时间

仅在数据再次加载到内存后才分配(100 - 150万alallos/free)。

如果我因为记忆而看到同样的行为,我不会感到惊讶两台电脑上的碎片(我的电脑和服务器)但我看到的是:1).在我的薪酬分配上花了大约5%的时间(不是确切的,但差不多)2).在服务器上,这些分配占用了约75%的时间

这怎么可能发生?什么会减慢服务器上的c++分配速度?同时,我的工作站也没问题。有什么不同呢?也许它与操作系统级别的内存管理功能有关?因为c++级别的管理器在这两种情况下是相同的。

下面是两种配置:

1)。我的计算机(其中分配占用约5%):

OS Name:                   Microsoft Windows 7 Enterprise 
OS Version:                6.1.7600 N/A Build 7600
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Member Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          Windows User
Original Install Date:     16/09/2011, 19:37:43
System Boot Time:          05/04/2013, 11:58:11
System Model:              7304A58
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: Intel64 Family 6 Model 23 Stepping 10 GenuineIntel ~2642 Mhz
Windows Directory:         C:Windows
System Directory:          C:Windowssystem32
Boot Device:               DeviceHarddiskVolume2
System Locale:             ru;Russian
Input Locale:              en-us;English (United States)
Total Physical Memory:     4,061 MB
Available Physical Memory: 872 MB
Virtual Memory: Max Size:  8,121 MB
Virtual Memory: Available: 4,579 MB
Virtual Memory: In Use:    3,542 MB
Page File Location(s):     C:pagefile.sys

2)。服务器(其中分配占用约75%):

OS Name:                   Microsoft(R) Windows(R) Server 2003, Enterprise Edition
OS Version:                5.2.3790 Service Pack 2 Build 3790
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Member Server
OS Build Type:             Multiprocessor Free
Original Install Date:     11/12/2008, 01:22:57
System Up Time:            1 Days, 8 Hours, 35 Minutes, 52 Seconds
System Manufacturer:       HP
System Model:              ProLiant BL685c G5  
System Type:               X86-based PC
Processor(s):              4 Processor(s) Installed.
                           [01]: x86 Family 16 Model 2 Stepping 3 AuthenticAMD ~2210 Mhz
                           [02]: x86 Family 16 Model 2 Stepping 3 AuthenticAMD ~2210 Mhz
                           [03]: x86 Family 16 Model 2 Stepping 3 AuthenticAMD ~2210 Mhz
                           [04]: x86 Family 16 Model 2 Stepping 3 AuthenticAMD ~2210 Mhz
Windows Directory:         C:WINNT
System Directory:          C:WINNTsystem32
Boot Device:               DeviceHarddiskVolume1
Total Physical Memory:     65,534 MB
Available Physical Memory: 61,284 MB
Page File: Max Size:       97,696 MB
Page File: Available:      93,445 MB
Page File: In Use:         4,251 MB
Page File Location(s):     C:pagefile.sys
                           D:pagefile1pagefile.sys
                           D:pagefile2pagefile.sys
                           D:pagefile3pagefile.sys
                           D:pagefile4pagefile.sys
                           D:pagefile5pagefile.sys
                           D:pagefile6pagefile.sys
                           D:pagefile7pagefile.sys

如果您能澄清这个问题,我将不胜感激。

问题可能是内存函数只使用一个互斥锁来锁定内存进行分配和释放。

相关内容

  • 没有找到相关文章

最新更新