This is historic... one should make a new investigation.
What I can say that a quick test of pre0.59s versus 1.7.3 with generic decoder on my x86-64 GNU/Linux box is not able to call a winner (or looser, for that matter).
Though, 1.8.0 will make the new libmpg123 a winner, because there is new optimization code going on!
The move to libmpg123 means some more code separation / interfacing and especially the move of any local static variables into the mpg123_handle to make multiple stream handling possible.
That may very well have an impact on performance of the mpg123 decoder.
I made some tests, even using gcc's -pg option and gprof, with mixed result: SSE and MMX on my Thinkpad X31 are slower, especially the asm synth funtion, while the generic code is fine.
On the other hand, on a K6-3+ using the same gcc version 4.1.2, the library based mpg123 is _faster_ for MMX and 3DNowExt.
Epecially the mmx synth is faster... while the 3DNowExt synth is slower, too (it's the same code as SSE synth, just calling different dct64) - but speedups in other regions still make 3DNowExt of the library mpg123 more efficient.
What I can clearly say is that dropping the multi-cpu support via ./configure --with-cpu does help in for both monolithic and library mpg123, but that is no wonder as it removes indirection.
The main point stays, though: On my Thinkpad the library is slow, on the K6-3+ it's fast.
What's the point to get here? I am not sure. We're depending on the compiler optimization (btw: Intel Compiler doesn't change the relation for the Thinkpad; not tested on the K6).
I guess that for my Thinkpad another gcc version could invert the picture again...
Also, I am not sure how far I should trust the gprof analysis... but it can be right; even when there is no apparent cause for the speed difference in the code itself, it could be some effect of cache and memory access.
Some reordering of instructions and data... for sure that happened.
I'll need further numbers to conclude anything about the (positive/negative) impact my code changes have.
OK, ran the test of trunk against branches/mpg123lib on my media box with AMD Geode (AthlonXP, actually):
thomas@kiste:~$ for i in mpg123-lib mpg123-trunk; do for cpu in mmx 3dnowext sse; do echo $i $cpu; time $i/src/mpg123 --cpu $cpu -q -t /thorma/var/music/metallica/ride_the_lightning/*.mp3; done; done
mpg123-lib mmx
real 0m25.949s
user 0m25.395s
sys 0m0.534s
mpg123-lib 3dnowext
real 0m25.442s
user 0m24.863s
sys 0m0.558s
mpg123-lib sse
real 0m25.794s
user 0m25.214s
sys 0m0.562s
mpg123-trunk mmx
real 0m26.650s
user 0m26.004s
sys 0m0.626s
mpg123-trunk 3dnowext
real 0m25.886s
user 0m25.262s
sys 0m0.600s
mpg123-trunk sse
real 0m25.695s
user 0m25.136s
sys 0m0.539s
thomas@kiste:~$ for i in mpg123-lib mpg123-trunk; do for cpu in 3dnow; do echo $i $cpu; time $i/src/mpg123 --cpu $cpu -q -t /thorma/var/music/metallica/ride_the_lightning/*.mp3; done; done
mpg123-lib 3dnow
real 0m33.011s
user 0m32.365s
sys 0m0.621s
mpg123-trunk 3dnow
real 0m32.830s
user 0m32.192s
sys 0m0.619s
You can't really make a decision there. It's tight.
What worries me a bit is the total loose of 3DNow against MMX - should it be that drastic?
Well, it's higher quality, at least.
--
Thomas.
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
mpg123 linux MP3播放器源码 (490个子文件)
mpg123.1 19KB
mpg123-wrapper.1 22B
README.3DNOW 2KB
libmpg123.a 1.28MB
configure.ac 61KB
ACCURACY 269B
libmpg123-0.symbols.alpha 81B
Makefile.am 7KB
Makefile.am 5KB
Makefile.am 3KB
Makefile.am 2KB
Makefile.am 620B
libmpg123-0.symbols.amd64 81B
libmpg123-0.symbols.arm 81B
libmpg123-0.symbols.armel 81B
AUTHORS 7KB
BENCHMARKING 4KB
BUGS 164B
layer3.c 50KB
libmpg123.c 48KB
mpg123.c 43KB
parse.c 36KB
id3.c 33KB
synth_altivec.c 29KB
readers.c 29KB
frame.c 28KB
optimize.c 22KB
control_generic.c 22KB
lfs_wrap.c 21KB
httpget.c 20KB
audio.c 18KB
win32_net.c 16KB
synth.c 16KB
os2.c 15KB
playlist.c 15KB
icy2utf8.c 13KB
dct64_i386.c 11KB
jack.c 11KB
term.c 11KB
format.c 11KB
nas.c 10KB
dct64_i486.c 10KB
coreaudio.c 10KB
layer2.c 10KB
wav.c 10KB
metaprint.c 9KB
alsa.c 8KB
tabinit.c 8KB
dct64_altivec.c 8KB
resolver.c 8KB
buffer.c 8KB
module.c 7KB
aix.c 7KB
synth_real.c 7KB
synth_s32.c 7KB
common.c 7KB
synth_i486.c 7KB
win32.c 7KB
xfermem.c 7KB
seek_accuracy.c 6KB
oss.c 6KB
portaudio.c 6KB
feedseek.c 5KB
sun.c 5KB
feedseek.c 5KB
alib.c 5KB
sdl.c 5KB
openal.c 4KB
dct64.c 4KB
sgi.c 4KB
id3dump.c 4KB
ntom.c 4KB
synth_8bit.c 4KB
layer1.c 4KB
compat.c 4KB
index.c 4KB
getlopt.c 4KB
hp.c 3KB
pulse.c 3KB
mint.c 3KB
esd.c 3KB
sndio.c 3KB
dither.c 3KB
mpg123_to_wav.c 3KB
stringbuf.c 3KB
genre.c 3KB
arts.c 3KB
sfifo.c 3KB
mpglib.c 2KB
plain_id3.c 2KB
text.c 2KB
legacy_module.c 2KB
win32_support.c 2KB
local.c 2KB
feature.c 2KB
dummy.c 1KB
seek_whence.c 1KB
scan.c 1KB
scan.c 1KB
equalizer.c 1KB
共 490 条
- 1
- 2
- 3
- 4
- 5
swq1982
- 粉丝: 30
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页