使用new关键字对单个位图对象进行多次赋值
本文关键字:赋值 对象 位图 new 关键字 单个 使用 | 更新日期: 2023-09-27 18:19:05
我有两个不同的逻辑设计在一个单一的形式(使用c#)。它们如下:
:
//Declaration is only one time
Bitmap a;
//This part of the code will be called many times
reload()
{
if(z==1)
{
//x and y are just strings representing the image path
a = new Bitmap(x);
pictureBox1 = a;
}
else
{
a = new Bitmap(y);
pictureBox1 = a;
}
}
第二://Declaration is only one time
Bitmap a;
Bitmap b;
a = new Bitmap(x);
b = new Bitmap(y);
//This part of the code will be called many times
reload()
{
if(z==1)
{
//x and y are just strings representing the image path
pictureBox1 = a;
}
else
{
pictureBox1 = b;
}
}
我的问题是哪一个是更有效的内存?我正在为内存有限的嵌入式系统(wince 6.0, CF 3.5)开发,并且我需要以单一形式处理大量图像(方法二将导致我声明大量位图对象)。
假设这些是足够大的Bitmap
,对于内存效率来说,第一个更好。它做同样的工作,同时允许有一个Bitmap
的实例而不是两个。
现在的问题是,您是否愿意承担内存开销并避免重复实例化它们?我经常发现,在嵌入式系统中,RAM和CPU时间都是非常有限的,这实际上取决于你在做什么,是宁愿使用RAM来节省CPU时间,还是反之亦然。
另一个与你相反的例子,我曾经在学校编写过一个嵌入式音乐合成器。CPU时间至关重要。比如说我想要创建一个平滑的色调。最好将信封塞进RAM中进行采样,而不是计算正弦值。