Mam funkcję, która porównuje 2 ciągi char char. Potrzebowałem go, aby działał znacznie szybciej niż w Ruby, więc użyłem RubyInline do przepisania funkcji w C. Zwiększyło to prędkość około 100 razy. Funkcja wygląda następująco:Jak przekonwertować tablicę ruby na tablicę C za pomocą RubyInline?
require 'inline'
inline do |builder|
builder.c "
static int distance(char *s, char *t){
...
}"
end
Jednak muszę porównać ciągi Unicode. Zdecydowałem się więc na rozpakowanie ("U *") i zamiast tego porównałem tablice liczb całkowitych. Nie mogę się dowiedzieć od skąpej dokumentacji do RubyInline, jak przekazać tablice ruby do funkcji i jak przekonwertować je na tablice C. Każda pomoc jest doceniana!
nie ma problemu, daj mi znać, jak się okazuje. Chciałbym zobaczyć twoją implementację po zakończeniu. –
Oto kod z odległości damerau_levenshtein: http://gist.github.com/147023 dla Ruby 1.8.7 działa jak czar, ale dławiki na ruby 1.9.1 – dimus
zaktualizowałem http: // GIST. github.com/147023 do pracy z 1.9.1 ruby i pomocą od Thnetos – dimus