Автор Гілка: Цифрувалка на Пітоні  (Прочитано 2953 раз)

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Пропоную увазі панства цифрувалку на Пітоні код з описом якої сидить ось тут.
« Змінено: 2008-10-12 14:48:00 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній Mykola

  • Новачок
  • *
  • дописів: 0
  • Карма: +0/-0
Re: Цифрувалка на Пітоні
« Відповідей #1 : 2008-10-16 16:25:46 »
код жахливий. читайте pep-08 а також про optparse. optparse має сильно помогти і привести код хоч до якогось вигляду

Відсутній Mykola

  • Новачок
  • *
  • дописів: 0
  • Карма: +0/-0
Re: Цифрувалка на Пітоні
« Відповідей #2 : 2008-10-16 16:50:54 »
Також позамінюйте a = 0; while a < b: a +=1 на for a in range(b). for a in range(b) - швидший і не потрібно вкінці писати a +=1

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Цифрувалка на Пітоні
« Відповідей #3 : 2008-10-16 22:20:29 »
Гм, я  - злісний сішник і не люблю виділяти зайву пам'ять заради банального циклу з лічильником
мама мія:
http://translate.google.com.ua/translate?hl=uk&sl=en&u=http://www.python.org/dev/peps/pep-0008/&sa=X&oi=translate&resnum=1&ct=result&prev=/search%3Fq%3Dhttp://www.python.org/dev/peps/pep-0008/%26hl%3Duk
« Змінено: 2008-10-16 22:32:26 від serg_ik »
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній raven

  • Новачок
  • *
  • дописів: 0
  • Карма: +0/-0
  • linux kettle
Re: Цифрувалка на Пітоні
« Відповідей #4 : 2008-10-16 23:43:35 »
Пану затятому сішнику краще слухати, що йому розумні люди кажуть, і не пороти тут привселюдно дурниці. Показую на простому прикладі.
Цитата
=> cat 1.py
b=10000000

for a in range(b):
    pass
=> cat 2.py
b=10000000
a=0

while a < b:
    a += 1
=> time python 1.py
python 1.py  2,82s user 0,11s system 96% cpu 3,035 total
=> time python 2.py
python 2.py  5,03s user 0,06s system 96% cpu 5,304 total
Пан затятий сішник, звісно, розуміє, чому це так.

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Цифрувалка на Пітоні
« Відповідей #5 : 2008-10-17 01:21:10 »
розумію, проте в C між обома типами циклів різниця лише в написанні (цикл for розпадається на відповідні компоненти while) .
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній raven

  • Новачок
  • *
  • дописів: 0
  • Карма: +0/-0
  • linux kettle
Re: Цифрувалка на Пітоні
« Відповідей #6 : 2008-10-17 01:45:48 »
розумію, проте в C між обома типами циклів різниця лише в написанні (цикл for розпадається на відповідні компоненти while) .
А шо, в Це таки уже приробили ітератори по аррею? Во шустрі хлопці, нема на них ансі... Чи то хтось плутає божий дар з яєшнею^W^W^W^W C з STL?

Щодо лупів в C. Курити весь комплект оптимізацій, включаючи align-loops, loop-optimize і ще кілька страшних матюків. Ну і unroll-loops, але це чисто для загального розвитку.

Відсутній Mykola

  • Новачок
  • *
  • дописів: 0
  • Карма: +0/-0
Re: Цифрувалка на Пітоні
« Відповідей #7 : 2008-10-17 14:51:53 »
не люблю виділяти зайву пам'ять заради банального циклу з лічильником
Можна так:
b=10000000

for a in xrange(b):
   pass
і память не виділяється і швидко
[crchemist@test tmp]$ time python while.py

real    0m3.089s
user    0m3.083s
sys     0m0.006s
[crchemist@test tmp]$ time python range.py

real    0m1.699s
user    0m1.472s
sys     0m0.199s
[crchemist@test tmp]$ time python xrange.py

real    0m1.099s
user    0m1.096s
sys     0m0.003s

Відсутній Веприк

  • Дописувач
  • **
  • дописів: 58
  • Карма: +0/-0
  • Pythonic man
Re: Цифрувалка на Пітоні
« Відповідей #8 : 2008-11-04 15:47:25 »
розумію, проте в C між обома типами циклів різниця лише в написанні (цикл for розпадається на відповідні компоненти while) .

В загальному for найчастіше роблять коли на момент виклику відома кількість ітерацій, тому він значно краще оптимізується.
А стосовно якості коду він жахливий:
- Код в функцію і виклик робити після if (__name__ == "__main__" ):
- optparse - зробить роботу по розброру параметрів за вас, крім того може згенерувати зручну довідку по параметрам, для тих для кого код потрапив без документації.
- Струкутурувати код, функція явно має робить кілька окремих дій які нескладно розділити, тоді побачимо можливості для оптимізація. А взагалі передчасна оптимізація як передчасна ея...ія. Наразі в такій простині особисто мені навіть не хочеться розбиратися.
- Ну і наостанок, я чесно кажучи не зрозумів що це за код і що він робить. Дігітайзер - це що? Якщо це конвертер з одного формату в інший по заданим параметрам, може так тоді написати Перетворювач(конвертатор) формату а в б з параметрами. Якщо комусь і буде потрібне щось подібне, він: ніколи не зможе знайти це в тому ж гуглі, бо просто визначення обрано так що по ключовикам буде шукатися будь-що , а не ваш код.
Мої рефлексії на довкілля http://blog.sasnyk.name