WEB开发网
开发学院手机开发Windows Mobile 开发 GDI on Windows Mobile 托管代码和本地代码的性能... 阅读

GDI on Windows Mobile 托管代码和本地代码的性能比较

 2010-03-01 18:58:00 来源:WEB开发网   
核心提示:GDI on Windows Mobile---托管代码和本地代码的性能比较摘要在论坛或者邮件组里经常会有朋友提到,要想提高图形应用程序的性能必须要使用本地代码(C/C++)来开发,GDI on Windows Mobile 托管代码和本地代码的性能比较,我们也经常听说本地代码在三维图形的操作上要比托管代码快得多,然而

GDI on Windows Mobile---托管代码和本地代码的性能比较

摘要

在论坛或者邮件组里经常会有朋友提到,要想提高图形应用程序的性能必须要使用本地代码(C/C++)来开发。我们也经常听说本地代码在三维图形的操作上要比托管代码快得多。然而,事实并非完全如此,本文会通过多个平台上的实验数据来探讨托管代码和本地代码在图形操作上的性能问题。

Keywords

GDI, C++, C#, Windows Mobile, .NET Compact Framwork, performance

原文由Windows Embedded MVP Chris Tacke发表在:http://community.opennetcf.com/articles/cf/archive/2008/05/19/native-vs-managed-code-gdi-performance.aspx

本地代码测试

我们先来看看本地代码测试程序。代码很简单,仅仅是为了测试。这段程序绘制了一个矩形位图域并创建了相应的DC(device context),然后重复10000次以下两个操作:一是不断的用灰色填充矩形域,二是不断在矩形域中间绘制绿色的椭圆。这里椭圆的长轴短轴都是在不断变化的,这可以避免显示驱动缓存对我们的测试造成的影响。主要代码如下:

...

screenDC = GetWindowDC(NULL);

bufferDC = CreateCompatibleDC(screenDC);

oldPen = (HPEN)SelectObject(bufferDC, CreatePen(PS_NULL, 0, NULL));

oldBrush = (HBRUSH)SelectObject(bufferDC, CreateSolidBrush(#00ff00));

hBufferBmp = CreateCompatibleBitmap(screenDC, BOX_WIDTH, BOX_HEIGHT);

oldObject = SelectObject(bufferDC, hBufferBmp);

rect.top = 0;

rect.left = 0;

rect.right = BOX_WIDTH;

rect.bottom = BOX_HEIGHT;

for(i = 0 ; i < GDI_ITERATIONS_PER_REPORT ; i++)

{

width += xop;

height+= yop;

if((width >= BOX_WIDTH) || (width <= 0))

xop *= -1;

if((height >= BOX_HEIGHT) || (height <= 0))

yop *= -1;

r += rop;

g += gop;

b += bop;

if((r > 254) || (r< 1))

rop *= -1;

if((g > 254) || (g< 1))

gop *= -1;

if((b> 254) || (b< 1))

1 2 3 4  下一页

Tags:GDI on Windows

编辑录入:coldstar [复制链接] [打 印]
赞助商链接