On 08/28/2016 05:51 PM, Honza Král wrote:
Honza Král
E-Mail: honza.k...@gmail.com
Phone: +420 606 678585
2016-08-28 17:40 GMT+02:00 Petr Messner <petr.mess...@gmail.com>:
Díky Honzo za odkaz.
Jinak - Python, Ruby, Java, C++, na jazyku nezáleží... Musím vědět, jestli daná
operace manipuluje s některým svým operandem, nebo vytváří novou hodnotu. A
protože jsou stringy v Pythonu immutable, tak jako programátor bych měl tušit,
že se bude kopírovat. A dát si pozor na případy, kdy se bude kopírovat furt
dokola.
Že to pypy nějak umí optimalizovat je hezké, ale i kdybych ho používal, tak
fakt není dobré spoléhat se na to, že mi překladač opraví chybu v samotném
návrhu algoritmu.
stale plati, ze mnohem dulezitejsi nez kompilator je programator -
pouzivam tak to, co dava z hlediska kodu (nikoli kompilatoru nejvetsi
smysl). Python s tim pocita a je na to zarizeny.
Snazit se o takove optimalizace vetsinou prinasi vice problemu nez
uzitku. A to i kdyz odhledneme od problemu spojenych s tim, ze python
ma nekolik implementaci ktere se chovaji jinak.
Zrovna tohle je v dokumentaci [0], takže tady je jasné jak se
implementace budou (v nejhorším případě) chovat. Když chci algoritmus
navrhout pořádně, je opravdu dobré na tohle vzít ohled.
Nebo se teda dá spolehnout buď na to, že můj program, resp. programy co
používají moji knihovnu, pojede jenom na CPythonu nebo PyPy, kde je
tohle v určitých případech optimalizované, nebo že na to, že budou
zpracovávat tak málo dat že kvadratická náročnost nebude hrát roli.
[0]
https://docs.python.org/3/library/stdtypes.html#common-sequence-operations
- poznámka (6)
_______________________________________________
Python mailing list
python@py.cz
http://www.py.cz/mailman/listinfo/python
Visit: http://www.py.cz