- *programming *c++ *говно *oldfagА вообще, конечно, если задуматься, то понимаешь, что сравнивать две сраных версии на гигагерцовых процессорах за миллисекунду — это ни в какие ворота не лезет. Еще раз, плата за слишком широкие и общие абстракции. Оптимизировать дальше — это, например, переписать replace своим велосипедом, не конвертирующим строку в дружественную регекспам форму, и так далее.
Но и так нормально, так тырпрайзненько. Вон, emerge -avuD world мне секунд 5-10-15 что-то на свежепоставленной машине примерно той же мощности считает. Нормуль.
Replies (90)
- @0xd34df00d:@borman Бгг, меня уже охватывают такие идеи )
- @Shchvova:@0xd34df00d ну или восьми. 0.1.342 и 0.2.012
- @0xd34df00d:@Shchvova Нет, речь о сравнении строк с версиями. И к ним относятся два с половиной поста.
- @Shchvova:@0xd34df00d "0.1.342" и "0.2.012"?
- @0xd34df00d:@Shchvova Но тут все легко. А если там какое-нибудь 0.1.12-alpha3 и 0.1.12?
- @Shchvova:@0xd34df00d линуксоиды, такие линуксоиды. Пару чисел сравнить надо, а уже конечные автоматы ломятся строить.from Adium8E034ABB, 12 months ago, in reply to /9
- @0xd34df00d:@Shchvova Ты бы код на пейтоне видел, там вообще какой-то пиздец — зачем-то регекспы притащили и ваще. emerge говно.from idead, 12 months ago, in reply to /10
- @Shchvova:@0xd34df00d питон хороший язык для таких целейfrom Adium8E034ABB, 12 months ago, in reply to /11
- @0xd34df00d:@Shchvova А почему на нем тогда написали такой говнокод?from idead, 12 months ago, in reply to /12
- @Shchvova:@0xd34df00d думаешь на плюсах говнокода меньше?from Adium8E034ABB, 12 months ago, in reply to /13
- @0xd34df00d:@Shchvova ХЗ. Я на плюсах няшненько за полчаса набросал.from idead, 12 months ago, in reply to /14
- @Shchvova:@0xd34df00d def CompareVersion(a,b,separator='.'):
lst = zip(a.split(separator),a.split(separator))
for (an,bn) in lst:
if(int(an)>int(bn)) return a;
if(int(bn)>int(an)) return b;
return max(a,b);from Adium8E034ABB, 12 months ago, in reply to /15 - @0xd34df00d:@Shchvova Что интуитивнее, 0.4-alpha1 или какой-нибудь 0.3.70?from idead, 12 months ago, in reply to /21
- @Shchvova:@0xd34df00d это не номер версии, это ее название.from Adium8E034ABB, 12 months ago, in reply to /22
- @0xd34df00d:@Shchvova А что тогда будет номером версии 0.4-alpha1? Олсо, моя хуита именно названия (в твоей терминологии) сравнивает.from idead, 12 months ago, in reply to /23
- @Shchvova:@0xd34df00d тому, кто придумал сравнивать такую хуету нужно отрывать яйки.from Adium8E034ABB, 12 months ago, in reply to /24
- @0xd34df00d:@Shchvova Так что сравнивать-то ты предлагаешь?from idead, 12 months ago, in reply to /25
- @Shchvova:@0xd34df00d в нормальных людей слова RC или Beta это просто замена минорной версии. И почему ты взял что там дефисы пишут? И почему нету -release?from Adium8E034ABB, 12 months ago, in reply to /26
- @0xd34df00d:@Shchvova Почему дефисы пишут? А почему бы и нет? Ну и два вопроса:
1. Какой версии соответствует -betaN? -alphaN? -rcN?
2. А зачем нужен -release?from idead, 12 months ago, in reply to /27 - @Shchvova:@0xd34df00d 1) ну, например версиям 0.2.0.2346, 0.0.1.1982 и 0.8.3.5423. Никогда не задумывался, почему последний номерок такой большой?from Adium8E034ABB, 12 months ago, in reply to /28
- @Shchvova:@0xd34df00d 2) за тем же за чем и вся остальная бета-альфа хуетаfrom Adium8E034ABB, 12 months ago, in reply to /28
- @0xd34df00d:@Shchvova Буквенные суффиксы служат только для того, чтобы легко дать понять, что 0.1.0-beta1 < 0.1.0-beta2 < 0.1.0. А 0.2.0.2346 — хуйпойми, то ли это багфиксов столько с 0.2.0 накопилось, то ли хрен знает какой rc на 0.2.1. Или 0.3? Или човаще?from idead, 12 months ago, in reply to /30
- @Shchvova:@0xd34df00d блядь, сравнивать названия версий хуета полная. Приходит в голову только школоте какой-тоfrom Adium8E034ABB, 12 months ago, in reply to /31
- @0xd34df00d:@Shchvova Однако и в генте, и где-то там еще, и даже в этом вашем доебане (частично) она реализована. Это не школота, это удобство. Мне правда удобнее работать с 0.4-beta1, чем выткать в 0.3.90.1231.4312from idead, 12 months ago, in reply to /32
- @0xd34df00d:@Shchvova Ты не находишь это слегка нелогичным?from idead, 12 months ago, in reply to /37
- @0xd34df00d:@Shchvova 0.1-beta5 ~ 0.1.0-beta5 < 0.1.0 < 0.1.2, очевидно же.from idead, 12 months ago, in reply to /39
- @Shchvova:@0xd34df00d просто циферки куда очевиднее...from Adium8E034ABB, 12 months ago, in reply to /40
- @0xd34df00d:@Shchvova Не всем. Один макоеб вон возмущался, что версии непойми какие, циферки одни.from idead, 12 months ago, in reply to /41
- @Shchvova:@0xd34df00d правда красиво? в 4ре строки paste.pocoo.orgfrom Adium8E034ABB, 12 months ago, in reply to /42
- @0xd34df00d:@Shchvova В 4 строчки я на C++0x/с boost.labmda тоже могу ;)from idead, 12 months ago, in reply to /43
- @0xd34df00d:@Shchvova Не хочу, они будут весьма пиздецовыми ) Я не отрицаю, что питон синтаксически более няшен.
Олсо, тогда можешь добиться соответствия поведению текущей версии портажей и закинуть патч в апстрим :3from idead, 12 months ago, in reply to /47 - @Shchvova:@0xd34df00d оно падает если что-то не то попадается. Печальfrom Adium8E034ABB, 12 months ago, in reply to /48
- @0xd34df00d:@Shchvova Стектрейсы! Стектрейсы! ЧСХ мой код-то не падает.from idead, 12 months ago, in reply to /49
- @Shchvova:@0xd34df00d а ты попробуй. Очень няшные и понятные сектрейсы. Сохраняешь пасту в файлик v.py потом делаешь что-то типа "python v.py 1.3.23 1.3.23-alpha"from Adium8E034ABB, 12 months ago, in reply to /50
- @0xd34df00d:@Shchvova Бектрейсы из плюсцов тоже вполне няшны и понятны, чо. Если не в вебките каком-нибудь.from idead, 12 months ago, in reply to /51
- @Shchvova:@0xd34df00d какие блядь бектрейсы из плюсов?from Adium8E034ABB, 12 months ago, in reply to /52
- @0xd34df00d:@Shchvova Олсо да, реквестирую бенчмарк, just for lulz. Сколько времени оно будет сравнивать десять тыщ раз раз версии "0.1.0" и "0.1.1"? А "1.3.23-alpha1" и "1.3.23-alpha2"?from idead, 12 months ago, in reply to /51
- @Shchvova:@0xd34df00d а, блин. Оно ведь не работает на этои примере: 1.0-alpha и 1.0from Adium8E034ABB, 12 months ago, in reply to /55
- @0xd34df00d:@Shchvova Сравнивать тупо две строки с версиями:
QStringList ls = left.split ('.'), rs = right.split ('.');
for (int i = 0; i < std::max (ls.size (), rs.size ()); ++i)
if (ls.value (i, "0").toInt () < rs.value (i, "0").toInt ()) return true;
else if (ls.value (i, "0").toInt () > rs.value (i, "0").toInt ()) return false;
return false;
Можно приделать такую же цепочку из реплейсов к результатам value или обернуть это в отдельную лямбду для читабельности (+1 строка).from idead, 12 months ago, in reply to /58 - @Shchvova:@0xd34df00d десять тыщ раз
0.1.0 и 0.1.1 — 0.1252
'1.3.23-alpha1','1.3.23-alpha2' — 0.1504
а у вас как с этим дела?from web, 12 months ago, in reply to /55 - @0xd34df00d:@Shchvova Это в секундах? У меня если делить и усреднять по запуску, то миллисекунда на прогон 0.1.0/0.1.1, 2-3 миллисекунды на выебоны с альфами. ЗАТО НЕ ПАДАЕТ.from idead, 12 months ago, in reply to /65
- @Shchvova:@0xd34df00d да, в секундах. Это тоже средние. У тебя десять тыщ раз за 2-3 мс?from Adium8E034ABB, 12 months ago, in reply to /66
- @0xd34df00d:@Shchvova RESULT : TestVersionComparator::perfSimple1():
0.0009 msecs per iteration (total: 33, iterations: 32768)from idead, 12 months ago, in reply to /67 - @0xd34df00d:@Shchvova Во, как вариант. У меня ноутовый C2D @ 1600 MHz, иначе перегревается :3from idead, 12 months ago, in reply to /71
- @Shchvova:@0xd34df00d не всеравно, у тебя 0.9 мс на 10к итераций, у меня 0.2from Adium8E034ABB, 12 months ago, in reply to /72
- @0xd34df00d:@Shchvova Заставляет попросить у тебя твой скрипт )from idead, 12 months ago, in reply to /74
- @Shchvova:а что больше 1.0.23 или 1-rc5? и правильно ли хендлицца оно у тебя?from Adium8E034ABB, 12 months ago
- @Shchvova:@0xd34df00d хм… блядь, хер вас поймешь с вашими версиями!from Adium8E034ABB, 12 months ago, in reply to /80
- @Shchvova:@0xd34df00d а что больше 1.0-beta или 0.999.999 ?from Adium8E034ABB, 12 months ago, in reply to /80
- @Shchvova:@0xd34df00d Ха-ха! У меня есть холодое немецкое пиво, фисташки и пицца. Ха-ха ))) А вообще я С++ программист, если что.from Adium8E034ABB, 12 months ago, in reply to /85
- @Shchvova:@0xd34df00d хорошо утром проснуться, и что-то такое поделать. Уже можно пойти погулять...from Adium8E034ABB, 12 months ago, in reply to /88
- @0xd34df00d:@Shchvova Воооо. А еще можно пилить личкрафты :3from idead, 12 months ago, in reply to /89