【发布时间】:2011-10-03 05:09:34
【问题描述】:
我有一个“性能关键”操作,我需要使用 1bpp 图像。 实际上我正在使用 Bitmap 类,并且我正在做,图形更新周期的每次迭代,字节数组内的位图副本。
看着我的任务管理器,这不是我可以继续做的:它一直使用 2% 的 cpu,我认为这对于一个实用程序之类的东西来说已经很多了。
我需要浪费尽可能少的内存和几乎 0 cpu。图片为 160x43,非常小。
为什么我不直接使用字节数组? Easy:我想重写它,做一些我不想自己重写的常用操作。
我显然可以使用不同的图像类(例如,来自 wpf,我不知道)。我需要使用 1bpp 图像的可能性。
题外话: 我对 32bpp 图像有同样的“问题”,我需要一种方法将它作为图像处理,而它是一个字节数组,我不能每次都复制我的字节!!!我就是这样浪费cpu的。
【问题讨论】:
-
2% 是不是很多?对我来说似乎很轻。为什么不是 100% 运行?你是故意放慢速度吗?
-
我正在考虑减慢它的速度,但正如我所说,这是一个实用程序并且在后台工作,它应该尽可能少使用 CPU。使用这个库的其他程序不使用 cpu(几乎没有),显然它们是用 C++ 编写的,所以你有更好的内存管理。我不需要很好地控制内存(我们有很多空闲),但我需要控制 cpu 的使用,因为这个实用程序即使在游戏执行期间也应该可以工作
-
@spender,如果这应该是一个后台应用程序,2% 的恒定 CPU 足以让我恼火。
-
@driis:我完全同意你的看法
-
使其速度提高 5 倍或频率降低 5 倍,使其保持在 0.5% 以下。您没有给出任何提示来帮助您使其速度提高 5 倍。将其设为 1bpp 肯定无济于事,这只会节省空间,而不是时间。 32bppPArgb 像素格式比所有其他格式快一个数量级。