2009-08-21 6 views
0

Ich versuche mein Programm schneller zu machen, also profile ich es. Im Moment ist der beste Grund:Was bedeutet "eingebaute Methode decodieren" in Python beim Profiling?

566 1.780 0.003 1.780 0.003 (built-in method decode) 

Was ist das genau? Ich nenne niemals "decode" irgendwo in meinem Code. Es liest Textdateien, aber ich glaube nicht, dass sie Unicode-codiert sind.

+3

Kleiner Hinweis: Unicode ist keine Codierung, daher kann nichts Unicode-codiert sein. UTF-8, ISO-8859-1 und ASCII sind alle Kodierungen. Unicode ist nicht. –

+0

Welche Version von Python führen Sie aus? –

+0

2,5 aus verschiedenen Gründen. Ich würde updaten, wenn ich könnte – Claudiu

Antwort

2

Wahrscheinlich ist dies die decode method of string objects.

+0

Ich bin mir ziemlich sicher, dass es ist - aber irgendeine Idee, warum es so viel Zeit in Anspruch nimmt/wann es aufgerufen wird? Ich nenne es nie explizit – Claudiu

+1

Das ist unmöglich ohne Code zu beantworten. –

1

Vermutlich ist dies str.decode ... suche deine Quelle nach "decode". Wenn es nicht in Ihrem Code enthalten ist, sehen Sie sich Python-Bibliotheksroutinen an, die in den Profilergebnissen angezeigt werden. Es ist sehr unwahrscheinlich, dass es etwas mit cPickle zu tun hat. Möchten Sie uns ein paar mehr "Gründe" zeigen, vorzugsweise mit den Spaltenüberschriften, um uns einen größeren Überblick über Ihr Problem zu geben?

Können Sie die Verbindung zwischen "using cPickle" und "einigen Testfällen würde schneller laufen" erklären?

Sie haben das X und Y aus "Gibt es etwas, das Aufgabe X schneller als Ressource Y?" ... Update, also haben Sie nach cPickle gefragt. Was verwendest du für das (optionale) Protokoll arg von cPickle.dump() und/oder cPickle.dumps()?

+0

Ich meinte "gibt es etwas, was tun wird, was cPickle tut, aber schneller". nvm über die Testfälle und so, vielleicht sind sie nicht verwandt – Claudiu

0

Ich glaube decode wird aufgerufen, wenn Sie Unicode-Zeichenfolgen in ASCII-Zeichenfolgen konvertieren. Ich schätze, Sie haben eine große Menge an Unicode-Daten. Ich bin mir nicht sicher, wie das Innere von Pickle funktioniert, aber es klingt so, als würden die Unicode-Daten in Ascii umgewandelt, wenn sie gebeizt werden?

+2

@Peter Shinners und zwei Upvoter: unicode_obj.encode ('ascii') -> str_obj * nicht * * decode * aarrgghh! –

1

(Beantworten @ Claudiu neueste Frage, seltsam versteckt in einem Kommentar ...?! -) ... Um wirklich Beizen zu beschleunigen, versuchen unladen swallow - die meisten seiner ehrgeizigen Ziele sind noch zu kommen, aber es tut schon Geben Sie mindestens 20-25% Beschleunigung beim Beizen und Entkorken.

+0

oh ordentlich, davon habe ich schon mal gehört. großer Name auch. (über die Frage :: Ich 'versteckte' es, weil ich dachte, das Beizen hatte nicht mit der Decodierung zu tun, aber vielleicht habe ich mich geirrt?) – Claudiu

+0

Decodierung würde nicht während des Beizens passieren (Codierung würde, wenn überhaupt), aber es könnte beim Entkeimen passieren - pickle du nur und nimmst es nicht ab? –