making sense - Komentāri [ieraksti | vēsture | ko es lasu | par mani]
gedymin

[   par mani   ]
[   arhīvs   ]

Python 7. Nov 2015|21:33

gedymin
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.
saite Read Comments

Reply:
No:
Lietotājvārds:
Parole:
Ievadi te 'qws' (liidzeklis pret spambotiem):
Temats:
Tematā HTML ir aizliegts
  
Ziņa:

Esi modrs! Lietotājs ir ieslēdzis anonīmo komentētāju IP adrešu noglabāšanu..