使用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)开发,并且我需要以单一形式处理大量图像(方法二将导致我声明大量位图对象)。

使用new关键字对单个位图对象进行多次赋值

假设这些是足够大的Bitmap,对于内存效率来说,第一个更好。它做同样的工作,同时允许有一个Bitmap的实例而不是两个。

现在的问题是,您是否愿意承担内存开销并避免重复实例化它们?我经常发现,在嵌入式系统中,RAM和CPU时间都是非常有限的,这实际上取决于你在做什么,是宁愿使用RAM来节省CPU时间,还是反之亦然。

另一个与你相反的例子,我曾经在学校编写过一个嵌入式音乐合成器。CPU时间至关重要。比如说我想要创建一个平滑的色调。最好将信封塞进RAM中进行采样,而不是计算正弦值。