Raspberry Pi 3上的Ghostscript速度很慢

问题描述 投票:0回答:1

我有一个perl-TK CGI程序,它使用perl Tk的postscript方法构建一个.eps文件。 .eps文件是一个720x290散点图,包含5760(720x8)个数据点。 .eps文件大小为1273 KB;生成的.png文件大小为45 KB。

我正在调用ghostscript将.eps文件转换为.png文件。

Raspberry Pi上的Ghostscript(最新版本是9.20)非常慢。

TOP shows gs is CPU bound!
    VIRT=51816
    RES=38292
    SHR=11160
    S=R
    %CPU=100.0
    %MEM=4.0

我的Raspberry Pi 3 Model B上的gs转换大约需要24秒才能完成!

我在我的电脑上运行了相同的perl-TK CGI脚本和最新的ghostscript(Windows 8.1上的9.22)。那里的gs转换大约需要3.7秒。树莓的Raspberry Pi味道需要6.4倍的时间才能完成!

有趣的是,在perl-TK下构建.eps文件在Pi上需要0.64秒,在Windows上需要26秒。在这种情况下,Raspberry Pi 3的完成时间仅为2.4倍。

我正在使用的特定gs命令看起来像......

$GS executable for Raspbian is /usr/bin/gs
$GS executable for Windows 8.1 is C:/Program Files/gs/gs9.22/bin/gswin64c.exe


$GS -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -dEPSCrop -sDEVICE=pngalpha -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r72 sOutputFile=Boiler-WebApp.png -fBoiler-WebApp.eps

对于标题,轴标签和图形键,我使用的是一组简约字体(仅限NimbusSans)并验证所有字体都是在没有替换的情况下加载的。

那么,有没有什么我可以用gs参数调整来为Raspberry Pi提供性能提升?在x32 Raspbian下,PC上x64 9.22的gs风格是否比9.20快得多?

我的Windows PC细节...... Intel Core2四核CPU Q6600 @ 2.4GHz,内存6.00 GB,x64

我的Raspberry Pi 3 Model B细节......

uname -a
Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux

cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
raspberry-pi ghostscript
1个回答
0
投票

这取决于你没有提供的EPS文件的内容,以及编译Raspberyy的二进制文件的方式。

您正在比较两个完全不同的CPU架构,使用两个不同的编译器,并且可能至少使用汇编语言和ARM上没有的Intel CPU的SSE2优化。

所以比较两者不是苹果和橘子,更像是苹果和红毛猩猩。我也不认为将CPU绑定的应用程序与更可能受内存或磁盘开销限制的perl脚本进行比较会显示出非常多的东西。

我建议1.2MB是一个非常大的EPS文件,使用文本和图形alpha会严重损害性能。

但在我看来,你只是反对英特尔CPU拥有更多马力的事实(它的价格也要高得多!)

我不相信你可以在命令行上更改任何可以让你在模型B上获得更多性能的东西,除了可能删除文本和图形alpha,这可能在72 dpi时没有很大的影响。

如果正在使用SSE2优化(无法分辨,因为我还没有看到该文件)那么这可能解释了差异,我不知道所使用的ARM芯片是否具有等价物,如果是这样你可以重写汇编语言代替使用ARM操作码。

您应该检查用于编译二进制文件的编译器优化。如果关闭编译器优化,那么这将花费你相当多的性能。

© www.soinside.com 2019 - 2024. All rights reserved.