[讨论]发现计算连续加法,串行效率要比并行的高?
我设计了一个串行和并行的连续加法运算,比较了一下运算时间,发现串行的比并行的要高,加法运算为1+2+...+1000000000,貌似随着项数增多,并行的算法没有凸显它的优势的?
并行代码(分奇数项和偶数项两个线程来求)
Thread T1 = new Thread(new ThreadStart(aa));//aa算奇数项和的函数,返回sum1 T1.Start(); Thread T2 = new Thread(new ThreadStart(bb)); //bb算偶数项和的函数,返回sum2 T2.Start(); while (T1.IsAlive || T2.IsAlive) { Thread.Sleep(1); } T1.Abort(); T2.Abort(); double sum = sum1 + sum2; //相加
aa(); //aa算奇数项和的函数,返回sum1 bb(); //bb算奇数项和的函数,返回sum2 double sum = sum1 + sum2;
private void bad_a() { sum1 = 0; for (int i = 1; i <= Max; i += 2) { sum1 += i; } }
[解决办法]
一个60毫秒,一个146毫秒,处理器AMD Athlon 64 X2 5200+ 2.7GHz
顺便说下,VS2012的自动集成单元测试很方便,它也可以列出单元测试运行的时间(最左边的窗格)。