首页 » 3 ruby/c++

Ruby C++ 扩展

早年写过用C++ + SWIG写Ruby插件的文,但实际中还是以原生C++写Ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下次再忘记,也不至于去翻仓库。
建立 extconf.rb
require 

Ruby下使用SWIG封装libcurl

本文通过在ruby下使用SWIG封装libcurl来简要描述如何通过SWIG来扩展ruby。
关于SWIG的入门使用可参见 使用SWIG扩展ruby性能
一、关于SWIG
SWIG全称为 Simplified Wrapper and Interface Generator,通过swig可以方便快捷的使用c/c++扩展php, ruby等语言以提高性能或满足其它用途。
二、关于libcurl
libcurl是一个著名的http/ftp库,通过libcurl可能轻松通过http/ftp协议访问网络。
三、流程

rb_yield让ruby/c++更加紧密

用c++写ruby模块提升性能效果显著一文让我初尝甜头,但未免连render都用c++也太得不尝失。自从使用了rb_yield,一切问题迎刃而解。
如代码
class Test
def foo
yield
end
end
相对

用c++写ruby模块提升性能效果显著

对于生成600项item的树型目录。
纯ruby代码大约200ms
包括rails初始化(0-6ms),mysql查询(0-2ms),树型生成(20-30ms),递归render,其它。
经过c++重写后,全部只需10ms。实在太爽啦。
如果那递归re

使用SWIG扩展ruby性能

  在使用ruby/rails的过程中,确实发现有时性能不尽人意,如生成一个拥有600项的item的3层树形结构目录要花去20ms,为提高性能在学习用c/c++写ruby模块的过程中,认识了swig,rubyInline等一系列帮助编写c/c++来提升ru