Tengo una función que compara 2 cadenas char por char. Necesitaba que corriera mucho más rápido que en Ruby, así que usé RubyInline para reescribir la función en C. Aumentó la velocidad unas 100 veces. La función tiene este aspecto:Cómo convertir una matriz de rubíes en una matriz C con RubyInline?
require 'inline'
inline do |builder|
builder.c "
static int distance(char *s, char *t){
...
}"
end
Sin embargo, necesito comparar cadenas de Unicode. Así que decidí usar un paquete ("U *") y comparar matrices de enteros en su lugar. No puedo descifrar, a partir de una escasa documentación sobre RubyInline, cómo pasar las matrices de ruby en la función y cómo convertirlas en matrices en C. ¡Cualquier ayuda es apreciada!
No hay problema, déjame saber cómo resulta. Me encantaría ver su implementación cuando haya terminado. –
Este es el código de la distancia damerau_levenshtein: http://gist.github.com/147023 para Ruby 1.8.7 funciona como un encanto, pero se ahoga con ruby 1.9.1 – dimus
I http actualización: // GIST. github.com/147023 para trabajar con 1.9.1 ruby también con la ayuda de thnetos – dimus