【发布时间】:2014-10-05 18:13:57
【问题描述】:
我正在使用一个while循环来执行一些算法,但它不是很快,我如何让我的程序使用更多的RAM? (我认为这是限制它的原因)它目前稳定在 504kB。
我正在使用
- C::B 13.12
- Windows 7 64 位
- mingw32-g++.exe(我认为我不需要 64 位版本,除非我想超过 4GB 内存,对吧?)
如果以前有人问过并回答过这个问题,我深表歉意,但如果有的话,我似乎找不到。
编辑:所以这将扫描 100 个像素,是什么导致这需要 2.2 秒?
#include <windows.h>
#include <iostream>
#include <wingdi.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
void scan(HDC dc, int x, int y, int &r, int &g, int &b) {
COLORREF color = GetPixel(dc, x, y);
r = GetRValue(color);
g = GetGValue(color);
b = GetBValue(color);
}
int main() {
HDC dc = GetDC(NULL);
int r,g,b;
for(int i = 0; i < 100; i++) {
scan(dc,100,100 + i,r,g,b);
}
ReleaseDC(NULL, dc);
return 0;
}
2:nd edit:不编辑代码可以减少这个时间吗?我的意思是,它必须受到我的 RAM 或 CPU 的限制,对吧?
【问题讨论】:
-
对于各种问题有各种有趣的时空权衡,但对此没有一般的答案。所以提出的问题毫无意义。
-
我解决数学问题的速度总是很慢。当我叔叔给我买了一个更大的房子时,一切都改变了,现在我很快就解决了所有的问题。
-
好吧,@KerrekSB,如果您的旧房子太小以至于您甚至无法舒适地坐着,那么情况可能确实如此。 :D 以类似的方式不断交换到 HDD 可能会减慢您的速度,但我怀疑那些 504 kB 是否足够。即使回到 MS-DOS 时代,这些也很容易实现,无需通过编辑启动文件作弊。 ;)
-
某些语言(如 Java)对应用程序可用的内存量施加了限制。使用 C++,它相当归结为操作系统。这可能意味着应用程序可以占用您在机器中安装的尽可能多的物理 RAM。然而,操作系统本身可以对应用程序可以使用的内容施加限制。如果你的机器有很多内存,那么你的问题可以通过改变代码的实现方式来改善。
-
@Galik 你有没有通过改变代码的实现方式来改进程序的例子?