Tôi có một hàm so sánh 2 chuỗi char bằng char. Tôi cần nó chạy nhanh hơn nhiều so với Ruby vì vậy tôi đã sử dụng RubyInline để viết lại hàm trong C. Nó đã tăng tốc độ gấp 100 lần. Hàm trông giống như sau:Làm thế nào để chuyển đổi mảng ruby thành mảng C với RubyInline?
require 'inline'
inline do |builder|
builder.c "
static int distance(char *s, char *t){
...
}"
end
tuy nhiên tôi cần so sánh chuỗi unicode. Vì vậy, tôi quyết định sử dụng giải nén ("U *") và so sánh các mảng số nguyên thay thế. Tôi không thể tìm ra từ một tài liệu nhỏ gọn cho RubyInline cách truyền các mảng ruby vào hàm và cách chuyển chúng thành các mảng C. Bất kỳ trợ giúp được đánh giá cao!
giúp Không có vấn đề, Hãy cho tôi biết làm thế nào nó quay ra. Rất thích xem triển khai của bạn khi hoàn thành. –
Đây là mã số của damerau_levenshtein khoảng cách: http://gist.github.com/147023 Đối với ruby 1.8.7 hoạt động như một nét duyên dáng, nhưng cuộn cảm trên ruby 1.9.1 – dimus
Tôi cập nhật http: // gist. github.com/147023 để làm việc với 1.9.1 ruby cũng như sử dụng trợ giúp từ thnetos – dimus