亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

Ruby中使用SWIG編寫ruby擴展模塊實例

2020-03-29 12:07:15
字體:
來源:轉載
供稿:網友

在使用ruby/rails的過程中,確實發現有時性能不盡人意,如生成一個擁有600項的item的3層樹形結構目錄要花去20ms,為提高性能在學習用c/c++寫ruby模塊的過程中,認識了swig,rubyInline等一系列幫助編寫c/c++來提升ruby性能的輔助工具。

rubyInline用于內嵌c/c++程序,簡單快捷,swig則幫助我們更容易地用c/c++寫出獨立的ruby模塊。

swig的入門使用方法

目標:用swig/c++編寫一個ruby模塊Test,并提供add方法作加法運算。

相關文件:
(1).test.i 接口
(2).test.h 頭文件
(3).test.cxx 函數實現
(4).extconf.rb 用于生成makefile
(5).(自動)test_wrap.cxx swig生成的test封裝
(6).(自動)Makefile Makefile文件由ruby extconf.rb得到
(7).(自動)test.so ruby模塊 由make得到

1、建立接口文件test.i

復制代碼 代碼如下:

%module test
%{
//包含頭文件
#include "test.h"
%}
//接口add
int add(int,int);

2、編寫wrap文件
復制代碼 代碼如下:

swig -c++ -ruby test.i

得到test封裝文件test_wrap.cxx

 

3、編寫test.h與test.cxx

復制代碼 代碼如下:

//test.h
#ifndef _TEST_TEST_H
#define _TEST_TEST_H
extern int add(int,int);
#endif
//test.cxx
#include "test.h"
int add(int left,int right)
{
        return left+right;
}

4、編寫extconf.rb用于快速生成makefile
復制代碼 代碼如下:

require 'mkmf'

 

dir_config 'test'
#stdc++庫,add函數未用到
$libs = append_library $libs,'stdc++'
create_makefile 'test'


運行 ruby extconf.rb 得到 Makefile 文件

 

5、生成test模塊

運行 make 得到模塊 test.so

6、測試

 

復制代碼 代碼如下:

irb
irb(main):001:0> require 'test'
=> true
irb(main):002:0> Test.add 3,4
=> 7
irb(main):003:0> Test.add 3333333333333333333333,44444444444444444
TypeError: Expected argument 0 of type int, but got Bignum 3333333333333333333333
        in SWIG method 'add'
        from (irb):3:in `add'
        from (irb):3
        from :0
irb(main):004:0>

測試成功

 

7、swig

swig支持很多c++的高級特性來編寫ruby的模塊,如類,繼承,重載,模板,stl等。

8、相關鏈接

(1).swig
(2).swig/ruby 文檔

9、備注

本文的add函數過于簡單,對比ruby 3+4性能不升反降。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲免费影视第一页| 精品国产精品自拍| 欧美日在线观看| 91免费高清视频| 日本欧美一级片| 欧美福利小视频| 日韩亚洲一区二区| 国产精品视频久久| 日韩精品小视频| 日韩高清电影免费观看完整| 91成人在线播放| 5566成人精品视频免费| 懂色av一区二区三区| 久久天天躁狠狠躁老女人| 欧美一级大胆视频| 色综合久久88| 在线国产精品视频| 成年无码av片在线| 国产欧美精品一区二区三区介绍| 欧美国产一区二区三区| 欧美国产高跟鞋裸体秀xxxhd| 欧美日韩激情网| 国产一区二区三区四区福利| 国产精品69精品一区二区三区| 国产不卡av在线| 国产91精品不卡视频| 亚洲最大的成人网| 亚洲国产日韩欧美在线图片| 4p变态网欧美系列| 国产精彩精品视频| 欧美自拍大量在线观看| 97av在线影院| 国产精品永久免费观看| 最新91在线视频| 一区二区欧美日韩视频| 欧美激情精品久久久久久变态| 中文字幕精品一区久久久久| 亚洲毛片在线观看.| 欧美成人性色生活仑片| 91天堂在线观看| 日韩国产精品一区| 2020国产精品视频| 亚洲天堂一区二区三区| 欧美日韩第一页| 欧美性猛交xxxx乱大交3| 国产女精品视频网站免费| 国产91网红主播在线观看| 亚洲精品美女网站| 欧美在线播放视频| 日韩中文娱乐网| 国产精品第三页| 国产精品久久77777| 国产精品欧美在线| 久久精品91久久久久久再现| 国产视频精品va久久久久久| 日韩一级黄色av| 伊是香蕉大人久久| 九九久久精品一区| 色老头一区二区三区| 中文字幕一精品亚洲无线一区| 91亚洲国产成人精品性色| 91影院在线免费观看视频| 国产精品亚洲激情| 欧美激情xxxx性bbbb| 亚洲一品av免费观看| 亚洲欧美国产高清va在线播| 性日韩欧美在线视频| 中文字幕亚洲综合| 97超视频免费观看| 欧洲成人在线视频| 亚洲一区二区久久久| 欧美性视频精品| 午夜精品久久久久久久99热| 欧美精品videosex极品1| 成人免费在线视频网站| 国产视频久久网| 久久噜噜噜精品国产亚洲综合| 91高潮在线观看| 国产欧美一区二区白浆黑人| 成人在线精品视频| 这里只有精品久久| 亚洲欧美一区二区精品久久久| 久久精品久久久久久国产 免费| 欧美性猛交丰臀xxxxx网站| 国产精品情侣自拍| 欧美日韩激情美女| 亚洲国产精彩中文乱码av在线播放| 亚洲最新在线视频| 国产精品精品久久久久久| 免费成人高清视频| 日韩av在线网页| 色婷婷综合久久久久中文字幕1| 欧美激情视频在线| 亚洲天堂成人在线| 欧美激情一区二区久久久| 欧美孕妇与黑人孕交| 欧美大胆a视频| 日韩在线欧美在线| 久久网福利资源网站| 久久免费观看视频| 精品动漫一区二区| 亚洲欧美一区二区三区久久| 国产精品视频男人的天堂| 亚洲最大福利网站| 成人欧美一区二区三区黑人孕妇| 92看片淫黄大片欧美看国产片| 夜色77av精品影院| 欧美日韩精品在线播放| 九色精品免费永久在线| 亚洲第一国产精品| 91精品一区二区| 欧美色图在线视频| 欧美成人免费大片| 国产盗摄xxxx视频xxx69| 欧美日韩国产丝袜另类| 亚洲男人第一av网站| 色综合色综合网色综合| 成人黄在线观看| 精品久久久999| 欧美wwwxxxx| 狠狠色香婷婷久久亚洲精品| 亚洲肉体裸体xxxx137| 最新国产精品亚洲| 91中文字幕一区| 精品露脸国产偷人在视频| 97精品一区二区视频在线观看| 国产区精品在线观看| 亚洲欧美一区二区三区在线| 国内精品中文字幕| www.日韩不卡电影av| 992tv成人免费视频| 久久香蕉频线观| 日韩av观看网址| 国产一区二中文字幕在线看| 久久全球大尺度高清视频| 亚洲成人激情小说| 91精品国产综合久久久久久久久| 亚洲国产女人aaa毛片在线| 91久久久久久久一区二区| 琪琪亚洲精品午夜在线| 国产精品久久久久久久久久99| 欧美最顶级的aⅴ艳星| 91高清免费在线观看| 国产精品高精视频免费| 欧美在线观看一区二区三区| 欧美一区二区三区……| www.日韩av.com| 国产精品久久婷婷六月丁香| 久久精品中文字幕电影| 久久综合色88| 热草久综合在线| 亚洲国产精品高清久久久| 国产精品久久久久久久9999| 成人动漫网站在线观看| 国产精品草莓在线免费观看| 久久久这里只有精品视频| 91精品久久久久久| 亚洲国产精品大全| 久久久伊人日本| 国产成人精品一区二区| 久久久久久久97| 久久影院在线观看| 国产精品夫妻激情| 日韩中文字幕国产精品|