StretchDIBits速度测试(COLORONCOLOR)
下面实验中显示窗口大小为1024*768,缩放模式设为COLORONCOLOR.
一、单通道图像
(1)保持图像高度为1024,宽度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像宽度的关系:
图像大小 | 耗时(ms) |
24*1024 | 0.485881 |
74*1024 | 0.594743 |
124*1024 | 0.571831 |
174*1024 | 0.653185 |
224*1024 | 0.739424 |
274*1024 | 0.797349 |
324*1024 | 0.882883 |
374*1024 | 0.948951 |
424*1024 | 1.052741 |
474*1024 | 1.10279 |
524*1024 | 1.209704 |
574*1024 | 1.291225 |
624*1024 | 1.388616 |
674*1024 | 1.481678 |
724*1024 | 1.546604 |
774*1024 | 1.640871 |
824*1024 | 1.622908 |
874*1024 | 1.755669 |
924*1024 | 1.778222 |
974*1024 | 1.84403 |
1024*1024 | 2.290068 |
1074*1024 | 2.14334 |
1124*1024 | 2.137177 |
1174*1024 | 2.165749 |
1224*1024 | 2.197622 |
1274*1024 | 2.210179 |
1324*1024 | 2.241017 |
1374*1024 | 2.323646 |
1424*1024 | 2.359107 |
1474*1024 | 2.40872 |
1524*1024 | 2.418016 |
1574*1024 | 2.54215 |
1624*1024 | 2.549388 |
1674*1024 | 2.648694 |
1724*1024 | 2.685471 |
1774*1024 | 2.763146 |
1824*1024 | 2.743719 |
1874*1024 | 2.885167 |
1924*1024 | 2.860264 |
1974*1024 | 3.265519 |
2024*1024 | 2.497559 |
将其绘成曲线图如下:
可以看出显示耗时与图像宽度近似成分段线性关系,分界点为图像宽度与显示窗口宽度相等处(1024)(暂不考虑最后一个陡降的点)
设y=kx+b(x为图像宽度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数:
k1=0.0015 b1=0.4179
k2=0.0009 b1=1.0962
关于最后一个陡降的点经过实验发现是的确存在的,原因不明,但后续的耗时恢复正常,所以暂且忽略这个异常的点。
(2)保持图像宽度为1024,高度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像高度的关系:
图像大小 | 耗时(ms) |
1024* 24 | 0.361436 |
1024* 74 | 0.592388 |
1024* 124 | 0.62894 |
1024* 174 | 0.691099 |
1024* 224 | 0.757364 |
1024* 274 | 0.829704 |
1024* 324 | 0.912667 |
1024* 374 | 0.985629 |
1024* 424 | 1.123233 |
1024* 474 | 1.127419 |
1024* 524 | 1.22558 |
1024* 574 | 1.246796 |
1024* 624 | 1.314681 |
1024* 674 | 1.412767 |
1024* 724 | 1.510644 |
1024* 774 | 2.289256 |
1024* 824 | 2.322529 |
1024* 874 | 2.289525 |
1024* 924 | 2.308631 |
1024* 974 | 2.300291 |
1024*1024 | 2.305223 |
1024*1074 | 2.313024 |
1024*1124 | 2.31014 |
1024*1174 | 2.308651 |
1024*1224 | 2.319193 |
1024*1274 | 2.323176 |
1024*1324 | 2.324207 |
1024*1374 | 2.325172 |
1024*1424 | 2.321219 |
1024*1474 | 2.334064 |
1024*1524 | 2.316492 |
1024*1574 | 2.315742 |
1024*1624 | 2.329006 |
1024*1674 | 2.321873 |
1024*1724 | 2.32554 |
1024*1774 | 2.330731 |
1024*1824 | 2.331057 |
1024*1874 | 2.336948 |
1024*1924 | 2.339502 |
1024*1974 | 2.33793 |
1024*2024 | 2.338746 |
将其绘成曲线图如下:
可以看出显示耗时与图像高度近似成分段线性关系,分界点为图像高度与显示窗口高度相等处(768)。
设y=kx+b(x为图像高度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数:
k1=0.0015 b1=0.4249
k2=0.0000 b2=2.2766
分界点右侧的一次项系数为0,也即图像高度的增加几乎不会导致显示耗时的增加,另外,分界点处的耗时有一个陡增。
二、三通道图像
(1)保持图像高度为1024,宽度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像宽度的关系:
图像大小 | 耗时(ms) |
24*1024 | 0.496943 |
74*1024 | 0.525924 |
124*1024 | 0.56152 |
174*1024 | 0.625716 |
224*1024 | 0.710384 |
274*1024 | 0.759371 |
324*1024 | 0.820918 |
374*1024 | 0.911579 |
424*1024 | 0.946737 |
474*1024 | 1.024288 |
524*1024 | 1.100743 |
574*1024 | 1.171984 |
624*1024 | 1.289861 |
674*1024 | 1.346379 |
724*1024 | 1.485398 |
774*1024 | 1.568699 |
824*1024 | 1.660429 |
874*1024 | 1.747256 |
924*1024 | 1.823535 |
974*1024 | 1.886791 |
1024*1024 | 9.406334 |
1074*1024 | 9.485967 |
1124*1024 | 9.487119 |
1174*1024 | 9.617951 |
1224*1024 | 9.709512 |
1274*1024 | 9.768444 |
1324*1024 | 9.798699 |
1374*1024 | 9.902748 |
1424*1024 | 9.951103 |
1474*1024 | 10.00635 |
1524*1024 | 9.992558 |
1574*1024 | 10.21022 |
1624*1024 | 10.20696 |
1674*1024 | 10.22107 |
1724*1024 | 10.30458 |
1774*1024 | 10.34907 |
1824*1024 | 10.39685 |
1874*1024 | 10.53284 |
1924*1024 | 10.56546 |
1974*1024 | 10.80934 |
2024*1024 | 10.77438 |
将其绘成曲线图如下:
可以看出显示耗时与图像宽度近似成分段线性关系,分界点为图像宽度与显示窗口宽度相等处(1024)。
设y=kx+b(x为图像宽度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数:
k1=0.0015 b1=0.3578
k2=0.0013 b1=8.0543
另外,分界点处的耗时有一个陡增。
(2)保持图像宽度为1024,高度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像高度的关系:
图像大小 | 耗时(ms) |
1024* 24 | 0.453282 |
1024* 74 | 0.559841 |
1024* 124 | 0.650393 |
1024* 174 | 0.713092 |
1024* 224 | 0.758881 |
1024* 274 | 0.828169 |
1024* 324 | 0.907679 |
1024* 374 | 0.994082 |
1024* 424 | 1.052253 |
1024* 474 | 1.150243 |
1024* 524 | 1.248796 |
1024* 574 | 1.309089 |
1024* 624 | 1.328522 |
1024* 674 | 1.399326 |
1024* 724 | 1.520225 |
1024* 774 | 9.382084 |
1024* 824 | 9.387245 |
1024* 874 | 9.397157 |
1024* 924 | 9.3715 |
1024* 974 | 9.390076 |
1024*1024 | 9.399021 |
1024*1074 | 9.388517 |
1024*1124 | 9.389165 |
1024*1174 | 9.407433 |
1024*1224 | 9.413657 |
1024*1274 | 9.41129 |
1024*1324 | 9.38704 |
1024*1374 | 9.427486 |
1024*1424 | 9.400938 |
1024*1474 | 9.415915 |
1024*1524 | 9.431978 |
1024*1574 | 9.438745 |
1024*1624 | 9.449743 |
1024*1674 | 9.446803 |
1024*1724 | 9.459638 |
1024*1774 | 9.475284 |
1024*1824 | 9.42492 |
1024*1874 | 9.435004 |
1024*1924 | 9.436805 |
1024*1974 | 9.441407 |
1024*2024 | 9.447217 |
将其绘成曲线图如下:
可以看出显示耗时与图像高度近似成分段线性关系,分界点为图像高度与显示窗口高度相等处(768)。
设y=kx+b(x为图像高度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数:
k1=0.0015 b1=0.4429
k2=0.0001 b1=9.3321
右侧的一次项系数几乎为0,也即高度的增加几乎不会再导致显示耗时的增加,另外,分界点处耗时会有一个陡增。
三、四通道图像
(1)保持图像高度为1024,宽度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像宽度的关系:
图像大小 | 耗时(ms) |
24*1024 | 0.470315 |
74*1024 | 0.532987 |
124*1024 | 0.571911 |
174*1024 | 0.616933 |
224*1024 | 0.738879 |
274*1024 | 0.801321 |
324*1024 | 0.878483 |
374*1024 | 0.946771 |
424*1024 | 1.025686 |
474*1024 | 1.129047 |
524*1024 | 1.196909 |
574*1024 | 1.271085 |
624*1024 | 1.393661 |
674*1024 | 1.510324 |
724*1024 | 1.612139 |
774*1024 | 1.738257 |
824*1024 | 1.851156 |
874*1024 | 1.935884 |
924*1024 | 2.030643 |
974*1024 | 2.123686 |
1024*1024 | 1.397279 |
1074*1024 | 1.466479 |
1124*1024 | 1.484383 |
1174*1024 | 1.551648 |
1224*1024 | 1.545651 |
1274*1024 | 1.542259 |
1324*1024 | 1.558865 |
1374*1024 | 1.572882 |
1424*1024 | 1.612407 |
1474*1024 | 1.606463 |
1524*1024 | 1.615305 |
1574*1024 | 1.654366 |
1624*1024 | 1.657202 |
1674*1024 | 1.671559 |
1724*1024 | 1.715028 |
1774*1024 | 1.732174 |
1824*1024 | 1.728852 |
1874*1024 | 1.76246 |
1924*1024 | 1.766069 |
1974*1024 | 1.813662 |
2024*1024 | 1.802157 |
将其绘成曲线图如下:
可以看出显示耗时与图像宽度近似成分段线性关系,分界点为图像宽度与显示窗口宽度相等处(1024)。
设y=kx+b(x为图像宽度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数:
k1=0.0018 b1=0.3249
k2=0.0004 b2=1.0767
另外间断点处耗时会有一个陡降。
(2)保持图像宽度为1024,高度从24到2024递增,递增间隔为50,下表为统计的显示耗时与图像高度的关系:
图像大小 | 耗时(ms) |
1024* 24 | 0.520621 |
1024* 74 | 0.615822 |
1024* 124 | 0.630938 |
1024* 174 | 0.694383 |
1024* 224 | 0.79024 |
1024* 274 | 0.843656 |
1024* 324 | 0.950601 |
1024* 374 | 1.029676 |
1024* 424 | 1.100249 |
1024* 474 | 1.232784 |
1024* 524 | 1.297848 |
1024* 574 | 1.339361 |
1024* 624 | 1.442296 |
1024* 674 | 1.503715 |
1024* 724 | 1.620008 |
1024* 774 | 1.368446 |
1024* 824 | 1.377501 |
1024* 874 | 1.536467 |
1024* 924 | 1.379138 |
1024* 974 | 1.385147 |
1024*1024 | 1.409499 |
1024*1074 | 1.403418 |
1024*1124 | 1.393499 |
1024*1174 | 1.404927 |
1024*1224 | 1.428232 |
1024*1274 | 1.401241 |
1024*1324 | 1.41452 |
1024*1374 | 1.440644 |
1024*1424 | 1.424837 |
1024*1474 | 1.41572 |
1024*1524 | 1.415339 |
1024*1574 | 1.424607 |
1024*1624 | 1.423748 |
1024*1674 | 1.421063 |
1024*1724 | 1.423177 |
1024*1774 | 1.436194 |
1024*1824 | 1.427017 |
1024*1874 | 1.439402 |
1024*1924 | 1.432318 |
1024*1974 | 1.443736 |
1024*2024 | 1.422492 |
将其绘成曲线图如下:
可以看出显示耗时与图像高度近似成分段线性关系,分界点为图像高度与显示窗口高度相等处(768)。
设y=kx+b(x为图像宽度,y为显示耗时),利用matlab拟合函数polyfit可分别获得分界点两侧的拟合参数:
k1=0.0016 b1=0.4501
k2=0.0000 b2=1.3835
分界点右侧一次项系数为0,也即图像高度的增加几乎不会导致显示耗时的增加。分界点处耗时会有一个陡降。
总结:
利用StretchDIBits进行位图数据显示,缩放模式COLORONCOLOR,总结特征如下:
(1)显示耗时与图像宽度成分段线性关系,分界点为图像宽度与显示窗口宽度相等处,且图像宽度小于窗口宽度时的一次项系数要大于图像宽度大于窗口宽度时的一次项系数。
(2)显示耗时与图像高度成分段线性关系。分界点为图像高度与显示窗口高度相等处,当图像高度大于显示窗口高度时的一次项系数几乎为0,也即显示耗时几乎不再随着图像高度的增加而增加。
(3)对于同样大小的图像,四通道图像显示最快,其次是单通道图像,最后是三通道图像。
(4)单通道与三通道图像显示耗时随着图像大小的提高而增加,但四通道图像在分界点处却有一个陡降。
下面是一个测试程序,源码下载