построение логики приложения на эксепшинах считается просто гигантской индусятиной
Не погоджусь. Змішування кодів помилок, ексепшенів та глобального стану — ось це жесть. А якщо усе акуратно написано з ексепшенами то і код значно легше читати, і потенційних помилок менше і перформанс не страждає помітно. Просто це інший підхід до організації коду і компілятор викине багато зайвого і не треба буде писати одноманітні if(...) по всьому ланцюгу викликів.
На жаль в реальності добре з еспепшенами написано коди небагатьох бібліотек та фреймворків.
Ця різниця ще з С:
— для пре-інкременту спочатку модифікується операнд, а потім модифіковане значення використовують у виразі
— для пост-інкремента спочатку значення використовують у виразі, а потім модифікують операнд.
a = b++; ===> a = b, b += 1, a;
a = ++b; ==> b += 1, a = b;
Вау, я чомусь думав воно всюди однакове. А що у вас там — Venmo, Zello, ще щось?
если бы ПайПал нас не кинул
У ПейПел були цілком конкретні вимоги, але з боку України щось вирішили не задовольняти їх. Тому кинули вас саме українські можновладці.
переводы с карты на карту пусть и не настолько безопасны как переводы ПейПала зато бегают быстрее и стоят дешевле
Перекази ПейПел миттєві і безкоштовні.
Если мой алгоритм лучше, я хочу его продать
Продати ти можеш реалізацію. Але вже саме те, що ти питав поради з вдосконалень ось тут робить його не зовсім твоїм алгоритмом.
Ну так, сучасні компілятори як правило вміють не генерувати зайвого коду. Але для даного прикладу там взагалі усе крім return 0; можна викинути. Тому приклад занадто вже синтетичний.
Ассемблер ни при чём. Связано с оптимизацией пайплайна процессора/брэнч предикшэном.
Компілятори які не дуже вміють в оптимізацію, або яким не сказали оптимізувати для постінкремента роблять копію об’єкта, використовують копію у виразі, а потім модифікують сам об’єкт. Щось типу
i++ стане auto t = i; i+=1, t;
++i буде просто i+=1, i;
Треба асемблерний код дивитися. Я виходжу з того, що пре-інкремент не створює копії значення.
Пояснення — bugs.python.org/file4451/timsort.txt
Приклад імплементації — www.geeksforgeeks.org/timsort
Це не важливо. Вимагаю дзвіночки як у котів!!11
В залежності від компілятора можна такі мікрооптимізації спробувати:
— зроби swap inline чи макросом, t в ньому зроби глобальною
— заміни i++ на ++і
— часто порівнняня з нулем буває швидше (для цього у процесорів є спеціальна команда) і тому можна цикли зробити від правого елемента до лівого
Також для індексів використовують беззнаковий тип (в С++ для цього спеціально є size_t).
І в цілому це С-код, а не С++.
Зроби ще порівняння з std::sort(arr, arr + n).
В некоторых странах Европы до сих пор нет возможности взять и перевести деньги произвольному человеку
PayPal, Venmo, Zellе — ось це все має працювати ж будь-де.
— Клацав?
Намагаєшся поміняти тему?
Аут оф сток?
І я все одно можу його замовити — у них є посилання на продавців та де можна купити товар не через Амазон.
Ну і що там шолом робить?
Робить він там те, що 1) це шолом для гірського вела, та 2) я купляв на амазоні шоломи для гірського вела, та 3) мені і дійсно скоро треба буде купувати новий шолом для гірського вело.
Ааа, так амазон ще вибирати треба
Живучи там де він не працює — так, треба. Мені не треба, британцям, чи згаданим вже іспанцям з мексиканцями — ні, не треба.
ти вдаєшся до хамства
Ображатися на скріншоти це новий рівень якийсь.
Я тобі вже 10к разів сказав що саме я вважаю хамством.
І що ж воно? Те що Амазон тобі показує не такі результати як мені :D
дікпіцький
О, знову негейство лізе назовні.
У мене підозра, що він Нетфлікса в очі не бачив, а просто ністєрпєває за розетку, китай та інших бідолах.
Ну він же сам вибрав на такому Амазоні шопитися. Але навіть так — imgur.com/a/Gwi08HL. Карма?
І?
І хтось з безпосередністю дятла задає всі ці питання:
І це означає, що його інтерфейс апріорі ідеальний
І це означає що пошук крутий?
І? Хтось це заперечував?
Чим «оцим»? Я посміявся з того, що Амазон наче знає, що ти кругом вишукуєш лайно і лайно тобі ж і показує. Але здається я це вже кілька разів повторив.
І так, я думаю ти ображаєшся на те, що я тобі привів скріншот з нормальними результатами для мене. Що теж доволі смішно. Можеш і це за грубість сприймати.
з такою логікою для тебе розетка гівно бо ти сам гівно
З такою логікою розетка гівно у порівнянні з Амазоном. А гівно вона бо в Українських реаліях не гівно просто не працює на жаль. Ось всі ці розетки, аліекспреси — це від бідності та неможливості нормально вести бізнес.
З ексепшенами зручно те, що ти обробляєш надзвичайну ситуацію там де це має сенс робити, а не передаєш код помилки з додатковою інформацією по всьому ланцюжку викликів.
Також зауважу, що ексепшени не мають бути заміною кодів помилок. Тобто коли операція завершилася неуспішно — маєш код. Коли сталося щось надзвичайне — маєш ексепшн.
Скажімо я форматую рядки для запису у файл. Нестача пам’яті — це не та помилка яку я в коді форматера можу обробити нормально і муситиму її передавати вище. Якщо ж таке буде ексепшеном то незалежно від того де сталася ця ситуація у мене може бути один універсальний обробник для подібного. І можна наприклад повідомити юзеру, що операція не вдалася і поприбирати з пам’яті якісь об’єкти. Коди вийде значно менше ніж писати if для усіх можливих помилок в усіх гілках логіки.