C'è questo script chiamato svnmerge.py che sto cercando di ottimizzare e ottimizzare un po '. Sono completamente nuovo in Python, quindi non è facile.Come ottimizzare le operazioni su gruppi di booleani di grandi dimensioni (75.000 elementi) in Python?
Il problema corrente sembra essere correlato a una classe denominata RevisionSet
nello script. In sostanza, ciò che fa è creare un ampio hashtable (?) Di valori booleani con chiave intera. Nel peggiore dei casi, uno per ogni revisione nel nostro repository SVN, che ora è vicino a 75.000.
Dopodiché esegue operazioni impostate su array di grandi dimensioni: addizione, sottrazione, intersezione e così via. L'implementazione è la più semplice implementazione O (n), che, naturalmente, diventa piuttosto lenta su insiemi così grandi. L'intera struttura dei dati potrebbe essere ottimizzata perché ci sono lunghe serie di valori continui. Ad esempio, tutte le chiavi da 1 a 74.000 potrebbero contenere true
. Anche lo script è scritto per Python 2.2, che è una versione piuttosto vecchia e comunque stiamo usando 2.6, quindi potrebbe esserci qualcosa da guadagnare anche lì.
Potrei provare a mettere insieme tutto questo, ma sarebbe difficile e richiedere molto tempo, senza contare che potrebbe essere già implementato da qualche parte. Anche se mi piacerebbe l'esperienza di apprendimento, il risultato è più importante adesso. Cosa suggeriresti di fare?
Quali operazioni si desidera eseguire nell'elenco di booleani? Ti aiuterebbe una serie numerica di booleani? – eumiro
Questa implementazione dell'insieme sembra che sia O (n), non O (n * m). 'se r in rs' dove' rs' è un dict è un'operazione O (1), non O (len (rs)). –
@Baffe Boyois: è vero, vieni a pensarci. Risolto il problema con il testo della domanda. –