同一程序在单、双核主机中内存占用率差别极大,附代码。该如何解决
同一程序在单、双核主机中内存占用率差别极大,附代码。
同一程序在单、双核主机中内存占用率差别极大,附代码
typedef int(_cdecl *Connect)(int i,int b);
HINSTANCE hinstDLL=NULL;
hinstDLL=LoadLibrary("hidlink.dll");
Connect Proc;
Proc = (Connect)GetProcAddress (hinstDLL,"Sendcfg");
while (m_ShanCi)
{
if(m_Bool == TRUE)
{
m_LiangDu_R+=m_ShanSu_R;
m_LiangDu_G+=m_ShanSu_G;
m_LiangDu_B+=m_ShanSu_B;
if (m_LiangDu_R >= m_ShanSe_R)
{
m_LiangDu_R=m_ShanSe_R;
}
if (m_LiangDu_G >= m_ShanSe_G)
{
m_LiangDu_G=m_ShanSe_G;
}
if (m_LiangDu_B >= m_ShanSe_B)
{
m_LiangDu_B=m_ShanSe_B;
}
if(m_LiangDu_R == m_ShanSe_R && m_LiangDu_G == m_ShanSe_G && m_LiangDu_B == m_ShanSe_B)
{
m_Bool=FALSE;
}
}
else
{
m_LiangDu_R-=m_ShanSu_R;
m_LiangDu_G-=m_ShanSu_G;
m_LiangDu_B-=m_ShanSu_B;
if (m_LiangDu_R <= 31)
{
m_LiangDu_R=31;
}
if (m_LiangDu_G <= 31)
{
m_LiangDu_G=31;
}
if (m_LiangDu_B <= 31)
{
m_LiangDu_B=31;
}
if(m_LiangDu_R == 31 && m_LiangDu_G == 31 && m_LiangDu_B == 31)
{
m_Bool=TRUE;
m_ShanCi--;
}
}
Proc(n_ID_R,m_LiangDu_R);
Proc(n_ID_G,m_LiangDu_G);
Proc(n_ID_B,m_LiangDu_B);
}
------解决方案--------------------
多线程在单/多核处理器上的差别主要是减少了CPU切换线程的开销,你的程序也应该是同样的。不需要频繁的切换线程自然就不需要频繁的保存现场。
——个人看法。
同一程序在单、双核主机中内存占用率差别极大,附代码
typedef int(_cdecl *Connect)(int i,int b);
HINSTANCE hinstDLL=NULL;
hinstDLL=LoadLibrary("hidlink.dll");
Connect Proc;
Proc = (Connect)GetProcAddress (hinstDLL,"Sendcfg");
while (m_ShanCi)
{
if(m_Bool == TRUE)
{
m_LiangDu_R+=m_ShanSu_R;
m_LiangDu_G+=m_ShanSu_G;
m_LiangDu_B+=m_ShanSu_B;
if (m_LiangDu_R >= m_ShanSe_R)
{
m_LiangDu_R=m_ShanSe_R;
}
if (m_LiangDu_G >= m_ShanSe_G)
{
m_LiangDu_G=m_ShanSe_G;
}
if (m_LiangDu_B >= m_ShanSe_B)
{
m_LiangDu_B=m_ShanSe_B;
}
if(m_LiangDu_R == m_ShanSe_R && m_LiangDu_G == m_ShanSe_G && m_LiangDu_B == m_ShanSe_B)
{
m_Bool=FALSE;
}
}
else
{
m_LiangDu_R-=m_ShanSu_R;
m_LiangDu_G-=m_ShanSu_G;
m_LiangDu_B-=m_ShanSu_B;
if (m_LiangDu_R <= 31)
{
m_LiangDu_R=31;
}
if (m_LiangDu_G <= 31)
{
m_LiangDu_G=31;
}
if (m_LiangDu_B <= 31)
{
m_LiangDu_B=31;
}
if(m_LiangDu_R == 31 && m_LiangDu_G == 31 && m_LiangDu_B == 31)
{
m_Bool=TRUE;
m_ShanCi--;
}
}
Proc(n_ID_R,m_LiangDu_R);
Proc(n_ID_G,m_LiangDu_G);
Proc(n_ID_B,m_LiangDu_B);
}
------解决方案--------------------
多线程在单/多核处理器上的差别主要是减少了CPU切换线程的开销,你的程序也应该是同样的。不需要频繁的切换线程自然就不需要频繁的保存现场。
——个人看法。