ps: 还有一般各位都是用什么来优化提速代码的呢,用了intel的IPP,发现有时候函数不完整,少了矢量间叠加等的函数,不能把原来的代码全
部翻译过来。
是啊,请给出例子。
>
> ps: 还有一般各位都是用什么来优化提速代码的呢,用了intel的IPP,发现有时候函数不完整,少了矢量间叠加等的函数,不能把原来的代码全
> 部翻译过来。
矢量叠加? BLAS-1
--
黄 澗石 (Jianshi Huang)
http://huangjs.net/
上面算法的主函数里有这样三个函数:
00269 computeDiff(s, psin, psprev); // step 2,3
00270
00271 // make preliminary guesstimate
00272 estimateFreq(psin, 0, W);
00273
00274 // return best local frequency estimate (is delayed by
TMAX /2)
00275 return getBestLocalEstimate();
其中computeDiff用SSE优化后(最下面),循环送入帧数据后,剩下的两个函数运行时间都变慢了,找不原因-_-!
> > 部翻译过来。- 隐藏被引用文字 -
>
> - 显示引用的文字 -
Could be an alignment problem.
把你的 platform, compiler 参数贴出来看看。
>
> On 11月12日, 下午1时57分, Shuo Chen <giantc...@gmail.com> wrote:
>> 给个能重现你说的现象的例子呗,要能编译运行的,不然让我们怎么猜?
>>
>>
>>
>> Jeremy.Chen wrote:
>> > 请问大虾们,有没有碰到过我这样类似的问题,是不是内存泄露,还是其他什么原因,怎么来排查,把后面减慢的函数提速到以前呢?
>> > SSE指令集优化一个函数,该函数效率提高了60%,可是接下来的函数,运行速度反而都变慢了,
>> > 致使整快代码没怎么提速了,杯具的。
>>
>> > ps: 还有一般各位都是用什么来优化提速代码的呢,用了intel的IPP,发现有时候函数不完整,少了矢量间叠加等的函数,不能把原来的代码全
>> > 部翻译过来。- 隐藏被引用文字 -
>>
>> - 显示引用的文字 -
--
xp下试验的吧
参数:
w = (unsigned)ceil(float(11025/60));
tmax = w;
yin.build(w, tmax);
for (i=0;i<n;++i)
{
//vBuffer是一段音频的buffer
outFrequencies[i] = yin.tick(vBuffer[i]);
> > 黄 澗石 (Jianshi Huang)http://huangjs.net/- 隐藏被引用文字 -
>
> - 显示引用的文字 -
> 黄 澗石 (Jianshi Huang)http://huangjs.net/- 隐藏被引用文字 -
>
> - 显示引用的文字 -
According to http://msdn.microsoft.com/en-us/library/fwkeyyhe(VS.71).aspx
/Od means disable optimization.
And many other options indicating it's a debug build, which is bad for
benchmark.
Could you make a 'release' build or replace /Od with /O2 ?
--
release下的,我的是默认的,谢谢Jianshi Huang了,调了好一阵,都没找到solution。
/O2 /GL /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "_AFXDLL" /D "_MBCS" /
FD /EHsc /MD /Yu"stdafx.h" /Fp"Release\YinSpeedTest.pch" /Fo"Release\
\" /Fd"Release\vc80.pdb" /W3 /nologo /c /Wp64 /Zi /TP /
errorReport:prompt
> 黄 澗石 (Jianshi Huang)http://huangjs.net/- 隐藏被引用文字 -
>
> - 显示引用的文字 -
Ok. 现在没有变慢了?
--
Anyway,thanks so much:=)
On 11月12日, 下午5时42分, Jianshi Huang <jianshi.hu...@gmail.com> wrote:
> 2009/11/12 Jeremy.Chen <you...@gmail.com>:
>
> > vs2005下:
> > /Od /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "_AFXDLL" /D "_MBCS" /Gm /
> > EHsc /RTC1 /MDd /Yu"stdafx.h" /Fp"Debug\YinSpeedTest.pch" /Fo"Debug\
> > \" /Fd"Debug\vc80.pdb" /W3 /nologo /c /Wp64 /ZI /TP /
> > errorReport:prompt
>
> According tohttp://msdn.microsoft.com/en-us/library/fwkeyyhe(VS.71).aspx
> >> 黄 澗石 (Jianshi Huang)http://huangjs.net/-隐藏被引用文字 -
>
> >> - 显示引用的文字 -
>
> --
> >> 黄 澗石 (Jianshi Huang)http://huangjs.net/-隐藏被引用文字 -
>
> >> - 显示引用的文字 -
>
> --
hmm... no idea. 试试 /Oa,assume no aliasing.
或者看看2个版本的 assembly 有何区别。
--