O: ATEconvert
Tak chvíly včera a chvíly dnes jsem si konečně našel čas a pokusil ještě časově snížit poslední logiku zpracování převodu znakové sady. Vlastně jsem se jen utvrdil, že můj původní návrh nové logiky je napsán správně a jen si rozšířil znalosti a utvrdil se v tom, co jak psát správně (nebo lépe jak jsem doposud psal). S tímhle časem se pohybuji kolem 32 vteřiny u zpracování původního souboru (viz historie vlákna) v reřimu WinUAE s možností FASTEST POSSIBLE.
Zde je způsob zápisu současného časového vítěze:
Ještě bych uvedl, že nepoužívam 2 způsoby urychlení. Jednou možností by bylo před 128 znaků v tabulce převodu dát prázdnych 128 znaků, abych nemusel snižovat hodnotu převáděného znaku o 128 pozic, čím bych urychlil průbeh zápisu v režimu FASTEST POSSIBLE o cca 3 vteřiny. Přitom bych ale zasíral zbytečně pamět o zbytečných 128 pozic, které si musí program pamatovat. Druhou možností zrychlení je vytvořit tabulku místo zápisu pomocí "ntice" = to je způsob zápisu proměnné, který je nejméně náročný na pamět a zároveň v takovémhle způsobu zápisu pracuje samotný program nejrychleji (ale né vždy nejrychleji) použít zápis pomocí tzv. "slovníku", který je ale neadekvátne náročný na pamět. Zrychlení bylo o cca 3-4 vteřiny v režimu FASTEST POSSIBLE a na zápis mi přestala stačit RAM 4 MB kterou ve WinUAE používám )
Přes definici funkce "def pokus(radek)" "ženu" samotný program z důvodu malého urychlení celkového zpracování. S FASTEST POSSIBLE o cca 3-4 vteřiny rychlejší zpracování, než bych použil konstrukci programu bez samotné definice.
V současné době jsem zase v koncích a nevím jak to urychlit no a to že mám přejít na "céčko" zde již bylo )
Ještě není ten správný čas na tenhle přechod, ješte mne čeká pár naplánovaných úkolů
Tak chvíly včera a chvíly dnes jsem si konečně našel čas a pokusil ještě časově snížit poslední logiku zpracování převodu znakové sady. Vlastně jsem se jen utvrdil, že můj původní návrh nové logiky je napsán správně a jen si rozšířil znalosti a utvrdil se v tom, co jak psát správně (nebo lépe jak jsem doposud psal). S tímhle časem se pohybuji kolem 32 vteřiny u zpracování původního souboru (viz historie vlákna) v reřimu WinUAE s možností FASTEST POSSIBLE.
Zde je způsob zápisu současného časového vítěze:
Code:
a = time.time()[color=#0000FF] do proměnné "a" si uložím současný počet vteřin od roku 1970 :smile: [/color] souborVstup = open("drac.txt", "r")[color=#0000FF] otevřu soubor darc.txt na čtení[/color] souborVystup = open("pokusik.txt", "w")[color=#0000FF] otevřu soubor pokusik.txt na zápis[/color] def pokus(radek):[color=#0000FF] podprogram s názvem pokus, který vyvolá příkaz "pokus(radek)", který přebírá hodnotu "řádek" = text 1 řádku ze souboru drac.txt[/color] c = ""[color=#0000FF] založím proměnnou "c" s hodnotou "text"[/color] for b in enumerate(radek):[color=#0000FF] procházím textem v řádku a do "b" načtu pozici zpracovávaného znaku a hodnotu znaku[/color] if ord(b[1]) > 127: c = radek[:b[0]] + iso[ord(b[1])-128][color=#0000FF] pokud není písmeno hodnoty ASCII, ulož do "c" vše po zpracovávaný znak a převod znaku, který je mimo ASCII a který máme zapsaný v naší tabulce v jedné ze 128 pozic (prvních 128 pozic je jen ASCII) a proto sniž jeho hodnotu o 128[/color] if len(c) > 0: [color=#0000FF] pokud byl v textu alespoň 1 znak mimo hodnotu ASCII, v hodnotě "c" je zapsám alespoň minimálně tenhle znak (c !=""), pokračuj[/color] if len(c) < len(radek): c = c + radek[len(c):] [color=#0000FF] zde zpracovávam konec textu z řádku mimo hodnotu ASCII, pokud takováhle situace nastala[/color] souborVystup.write(c) [color=#0000FF] zapisuji převeden řádek do souboru pokusik.txt[/color] else: souborVystup.write(radek)[color=#0000FF] pokud je text jen z ASCII znaků (c = "") zapíš do souboru pokusik.txt původní řádek ze souboru drac.txt[/color] for radek in souborVstup:[color=#0000FF] postupně načítám řádky ze souboru drac.txt do proměnné "radek"[/color] pokus(radek)[color=#0000FF] skok do podprogramu "pokus" = GOTO POKUS :smile:, "přenes" do podprogramu i proměnnou "radek"[/color] souborVstup.close()[color=#0000FF] uzavřu soubor drac.txt[/color] souborVystup.close()[color=#0000FF] uzavřu soubor pokusik.txt[/color] print time.time() - a[color=#0000FF] odečtu současný stav vteřin od roku 1970 od stavu vteřin, které jsou uložené v proměnné "a" :smile: a vitisknu na obrazovku[/color]
Přes definici funkce "def pokus(radek)" "ženu" samotný program z důvodu malého urychlení celkového zpracování. S FASTEST POSSIBLE o cca 3-4 vteřiny rychlejší zpracování, než bych použil konstrukci programu bez samotné definice.
V současné době jsem zase v koncích a nevím jak to urychlit no a to že mám přejít na "céčko" zde již bylo )
Ještě není ten správný čas na tenhle přechod, ješte mne čeká pár naplánovaných úkolů
Komentovat