Ho un numero binario (52 bit), rappresentato come una stringa "01.100.011 ...."Rubino: contare il numero di 1 di in un numero binario
Quale sarebbe il modo più rapido per contare il numero di 1 di ?
"01100011....".count("1")
ovviamente funziona ma richiede molto tempo se questa operazione deve essere eseguita migliaia di volte.
ok, qualche informazione in più. Sto cercando di creare i bit vettori per le parole come segue
def bit_vec(str)
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
bv = ""
alphabet.each_char do |a|
if str.include?(a)
bv += "1"
else
bv += "0"
end
end
bv
end
Il metodo bit_vec viene chiamato circa 170 volte K. Conservo i vettori bit in un hash e li uso per trovare parole simili per una determinata parola XORando i bit-vettori e contando il numero di 1 (più 1 = = meno similarità). Se il metodo count non usa la scansione # di stringa, cos'altro potrebbe usarlo?
So che Ruby è più lento di dire C o Java. Sto solo cercando di migliorare l'algoritmo il meglio che posso. Non sto cercando la velocità grezza.
Forse l'inclusione? il metodo è il collo di bottiglia?
Al posto dei vettori di bit, ho potuto provare la memorizzazione delle stringhe come una serie di lettere e di fare qualcosa del genere ([ "a", "b", "c" ] & ["x", "b", "x"]). dimensione – Maulin