背包问题,我写了两个版本的算法程序,bag 和 bag-mt 其中后者是多线程版本,其 使用 4 线程分段计算验证,编写语言是 ASM ,详情请向下观赏:
概述:
1 我的程序对内存访问也是比较频繁密集的,还有就是 xeon 是负载服务器,上面 还有N个后台进程在驻留,可能可这个也有关系。
2 为了加速,我比较多的使用局部变量,省去临界区,互斥事件的耗时。最后汇总。
源码:
bag:
.386 .model flat,stdcall option casemap:none
include c:/masm32/include/windows.inc include c:/masm32/include/user32.inc includelib c:/masm32/lib/user32.lib include c:/masm32/include/kernel32.inc includelib c:/masm32/lib/kernel32.lib
CDim equ 28
.const wetdb220,56,79,135,21,5,175,90,11,153;KG db25,68,123,35,8,94,207,2,67,159 db78,34,43,12,167,231,12,54,98,32 db65,146,57,234,65,93,56,243,8,56 valdb60,100,45,26,90,10,57,240,136,230;$ db78,34,7,23,89,250,129,94,45,24 db56,89,34,124,78,5,45,234,89,32 db34,72,50,147,180,210,45,18,69,94 limwetdd400;Limit Wet