Hou*_*eMD 5 ruby performance rmagick imagemagick graphicsmagick
我正在寻找一种非常快速的方法来渲染放置在某些背景上的小瓷砖的动态图像(想象一下动态渲染国际象棋游戏并在每个玩家移动后发送图像).所以程序似乎很简单:1.采取一些背景2.使用图像偏移从上到下放置国际象棋图像的透明图像(以获得正确的视角)3.将整个图像保存为gif
尝试使用imagemagick:
使用类似的东西:
convert -page 176x220 -gravity SouthWest 1.png -page +35+30 -gravity SouthWest 1.png -page +62+50 1.png -page +10+55 1.png -background none -compose DstOver -flatten result.gif
Run Code Online (Sandbox Code Playgroud)
和图形magick以类似的方式:gm转换... -page + 35 + -30 -flatten ..
但是没有留下深刻的印象,GraphicsMagick提供了更好的结果,但是:
服务器:
user system total real
all: 0.000000 0.000000 47.650000 ( 70.991829)
small: 0.000000 0.000000 6.600000 ( 8.110900)
medium: 0.000000 0.000000 6.820000 ( 8.494131)
large: 0.000000 0.000000 10.890000 ( 15.818351)
extreme: 0.000000 0.000000 11.160000 ( 19.873541)
biggest: 0.000000 0.000000 11.640000 ( 14.327450)
Run Code Online (Sandbox Code Playgroud)
在本地Phenom II x6:
user system total real
all: 0.000000 0.000000 1.980000 ( 0.757320)
small: 0.000000 0.000000 0.330000 ( 0.082142)
medium: 0.000000 0.000000 0.380000 ( 0.127744)
large: 0.000000 0.000000 0.410000 ( 0.147252)
extreme: 0.000000 0.000000 0.440000 ( 0.180338)
biggest: 0.000000 0.000000 0.470000 ( 0.210802)
Run Code Online (Sandbox Code Playgroud)
想到可能文件加载是问题,试过Rmagick(脚本来自:http://www.imagemagick.org/RMagick/doc/ilist.html#mosaic):
require "benchmark"
require 'RMagick'
#Demonstrate the mosaic method
a = Magick::ImageList.new
26.times do
a.read("csii/some_asset.miff")
end
b = Magick::ImageList.new
page = Magick::Rectangle.new(0,0,0,0)
a.scene = 0
2.times do |i|
2.times do |j|
b << a.scale(1)
page.x = j * b.columns
page.y = i * b.rows
b.page = page
(a.scene += 1) rescue a.scene = 0
end
end
# Make a 5x5 mosaic
#mosaic = b.flatten_images
#mosaic.write("mosaic.gif")
# mosaic.display
Benchmark.bm(7) do |ben|
ben.report("tiny:") {mosaic = b.mosaic}
end
exit
Run Code Online (Sandbox Code Playgroud)
结果更加奇怪: 这是一个小的2*2瓷砖图像
服务器:
user system total real
tiny: 16.210000 0.000000 16.210000 ( 16.982007)
Run Code Online (Sandbox Code Playgroud)
飞鸿:
user system total real
tiny: 0.000000 0.010000 0.010000 ( 0.001637)
Run Code Online (Sandbox Code Playgroud)
附加信息:
输入文件格式:尝试过png和miff
输出:必须是gif
服务器:VPS上的1个XEON核心~2.2Ghz
PHENOM:6*3.2Ghz
版本差异:
Phenom
Version: ImageMagick 6.5.7-8 2010-12-02 Q16 http://www.imagemagick.org
Server
Version: ImageMagick 6.5.1-0 2010-12-02 Q16 OpenMP http://www.imagemagick.org
Run Code Online (Sandbox Code Playgroud)
质询
似乎每次我问一个关于 SO 的问题时,答案都会立即出现。
这次看来性能问题是因为 IM 和 GM 中的 OpenVz VPS 和 OpenMP。在没有 OpenMP 功能的情况下重新编译后,服务器上的性能非常好。
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |