Python |
[7. Nov 2015|21:33] |
Pēdējos mēnešos esmu sācis izmantot Pitonu vairākos projektos, kuros vajadzīgs apstrādās daudz datus, kā arī sācis niekoties ar programmēšanas sacensībām. Destilētās atziņas:
* standarta Pitona vietā lietot PyPy. 7 reižu vidējais ātruma uzlabojums 20 benchmarkos.
* np.loadtxt vietā .csv failu ielasīšanai labāk lietot Pandas dataframe. 15 reižu ātruma uzlabojums pēc kāda testa datiem.
* range vietā lietot xrange utt. - izvairīties no konstruēšanas un kopēšanas, kur bez tā var iztikt. /Piezīme: pie maza iterāciju daudzumu (1000), PyPy 2.7 range() ir pat ātrāks nekā xrange()./
* ir ok ideja list'u izmantot kā masīvu. Nav ok ideja list'u kā rindu. Rindai ir domāta collections.deqeue.
* par pārējo var neuztraukties. 50% ātruma uzlabojumu no for cikla aizvietošanas ar list comprehension neviens neievēros.
* Pitonā ir viegli rakstīt kodu. Implikācija - Pitonā ir viegli rakstīt sliktu kodu. Piemērs - tīklā pameklējot Dijkstras algoritma references implementāciju Pitonā man Googles pirmajā lapā atradās tikai kods, kas ir vai nu lēns, vai neglītī uzrakstīts.
* un, pats galvenais - saprast, ka daudzi, daudzi uzdevumi gluži vienkārši nav atrisināmi ar Pitonu.
Edit - jauni novērojumi:
* zip() versijā 2.x ir lēns, labāk lietot for ciklu
* divus stringus apvienot ar "+" ir daudz lēnāk nekā pievienot vienu stringu galā otram ar "+=".
* binārā meklēšana (ar bisect_left, bisect_right ) ir ar diezgan lielu constant factor. |
|
|