- RSS订阅
分类目录
- FreeBSD (3)
- Linux (25)
- archlinux (3)
- chromium (5)
- ubuntu/debian (14)
- WP使用 (3)
- WP原创插件 (1)
- 系统管理 (8)
- 编程 (53)
- C/C++ (18)
- glibc (11)
- php (1)
- PostgreSQL (7)
- ruby (19)
- 1 ruby/基础 (5)
- 2 ruby/rails (7)
- 3 ruby/c++ (5)
- 4 rubygems (1)
- 5 ruby/其它 (1)
- Vim (6)
- 版本控制 (2)
- C/C++ (18)
- 闲聊 (19)
- dvorak (5)
-
最近文章
近期评论
- Re: Dvorak打字速度记录
很好很强大!...(JiangMiao) - Re: Dvorak打字速度记录
全力联系dvroak一周,手速到了430了,确实DV比Q快很 多,我自己把U和I的位置换了下 You reached 334 points, so you achieved......(helloworld) - Re: ssh无密码登入设置
多谢纠正,已更正。...(JiangMiao) - Re: ssh无密码登入设置
解决问题了,非常感谢! 本文第四节“4、启动ssh-agent”里面的 “ps -Af|agent查看有无ssh-agent有无运行” 应该是ps -Af |grep agent吧...(fengyqf) - Re: [WP插件]WP Cleaner v1.1.4
该插件的详细介绍和下载地址请移步至WP-Cleaner 插件发布页面 分享到: 新浪微博 腾讯微博 豆瓣 开心网 人人网 QQ 空间 邮件...(Sino Blog)
- Re: Dvorak打字速度记录
小工具
功能
首页 » 3 ruby/c++
Ruby C++ 扩展
早年写过用C++ + SWIG写Ruby插件的文,但实际中还是以原生C++写Ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下次再忘记,也不至于去翻仓库。
建立 extconf.rb
require
建立 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协议访问网络。
三、流程
关于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
相对
如代码
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
纯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