- *qt *c++ *nopython *говноК #841636.
Набросал с нуля за полчаса собственную реализацию компаратора версий: paste.pocoo.org (умеет все то же, что и пейтоновая, кроме версий с -r, они нафиг не нужны, но при желании прикручиваются сюда как нефиг делать).
Потом пару часов осиливал CTest, QTestLib и оптимизировал, потому что в оригинале сравнение, например, 0.3.70-alpha1 и 0.3.70-alpha2 жрало 12 миллисекунд. Оптимизация по большей части свелась к однократной инициализации массивов в Numerize (не зря там static), что само по себе сократило время выполнения чуть больше, чем в три раза. В итоге "0.1.0" и "0.1.1" (самый типичный сценарий имхо) сравнивается 1-2 миллисекунды, строчки со всякими альфами и бетами — 3-4.
Тексткейсы — Ъ. Но, опять же, только для подобных задач. Не нужно их пихать везде.from idead, 12 months ago
Replies (13)
- @0xd34df00d:@borman Да, я так и хотел, но потом ВНЕЗАПНО задумался о читаемости и понял, что будет весьма нечитабельно.
- @borman:@0xd34df00d Сфигали? Это хорошо описывает желаемое поведение. При чтении алгоритма необязательно сразу видеть, сколько раз оно инициализируется.
- @0xd34df00d:@borman Разумно. Перепилил, чо. Судя по тестам, стало еще чуток быстрее )
- @borman:@0xd34df00d Ы, отрицательные версии — зачот
- @0xd34df00d:@borman Ну, свели задачу к сравнению набора чисел, чо )
- @borman:
The version is normally made up of two or three (or more) numbers separated by periods, such as 1.2 or 4.5.2, and may have a single letter immediately following the last digit; e.g., 1.4b or 2.6h.
Я не вижу, твой код этот случай покрывает? Или у тебя свои правила?from Vacuum IM, 12 months ago - @0xd34df00d:@borman Хм. Надо читнуть моар комментцов к тому коду. Похоже, что свои, основанные на гентоидных. Я как-то просто ни разу не видел версий типа 1.2b.
- @borman:@0xd34df00d Если хочешь свой код в апстрим — очевидно.from Vacuum IM, 12 months ago, in reply to /10
- @0xd34df00d:@borman Эээ, в какой апстрим. Это для пакетного манагера личкрафтов.from idead, 12 months ago, in reply to /11