- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
function main()
{
print("before");
try
{
throw 1;
}
catch (x: any)
{
print("catch");
}
print("end");
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
function main()
{
print("before");
try
{
throw 1;
}
catch (x: any)
{
print("catch");
}
print("end");
}
Самый большей говнокод за всю историю человечества сделан.
ASD_77 # 0
ASD_77 # 0
ASD_77 # 0
JloJle4Ka # 0
А что там с пкрфомансом в «JS++»?
ASD_77 # 0 ⇈
j123123 # 0 ⇈
guest # 0 ⇈
Ну может быть в триста
Но не больше
ASD_77 # 0 ⇈
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
Если писать только на сишном подмножестве JS, то можно добиться сишного пирфоманса?
Не думаю. Придётся заодно насрать на спеку JS чтобы разрешить UB'ы и аггрессивные оптимизации.
3.14159265 # 0 ⇈
В JS этих понятий нет в принципе.
Даже если писать на подмножестве и срать в байт-буфера у оптимизатора будут связаны руки.
bormand # 0 ⇈
Ну как... Он всё ещё может забить хуй на спеку и считать, что обращения к Uint32Array никогда не алиасятся с Float32Array.
По спеке он таких ужасных предположений, конечно, делать не должен.
bormand # 0 ⇈
Ты, наверное, забил на эту гарантию хуй и дал LLVM'у поиграться с аргументами по-сишному?
JloJle4Ka # 0 ⇈
Ну и как же? Сишка в случайном порядке аргументы обсчитывает?
bormand # 0 ⇈
Более того, она их перемешивает между собой...
JloJle4Ka # 0 ⇈
CEHT9I6PbCKuu_nemyx # 0 ⇈
bormand # 0 ⇈
Единственная гарантия: тело функции всё-таки будет вычисляться позже, чем её аргументы сайд-эффекты от тела функции всё-таки произойдут позже, чем сайд-эффекты от вычисления её аргументов.
CEHT9I6PbCKuu_nemyx # 0 ⇈
JloJle4Ka # 0 ⇈
А если во время вычисления аргументов ставится таймер, который сработает через ЧАСОК, но тело функции завершается гораздо быстрее?
Kozel # 0 ⇈
Мне почему-то кажется, что си отработает примерно так же.
ASD_77 # 0 ⇈
j123123 # 0 ⇈
Но вообще в самом LLVM есть специально сделанные костыли именно для исключений
https://llvm.org/docs/ExceptionHandling.html#exception-handling-intrinsics
CEHT9I6PbCKuu_nemyx # 0 ⇈
JloJle4Ka # 0 ⇈
ASD_77 # 0 ⇈
Kozel # 0 ⇈
Кстати, если поставить себе задачу сделать try/finally (с единственной целью, чтобы перед return изнутри try обязательно выполнялся finally) - там будут те же проблемы?
ASD_77 # 0 ⇈
ASD_77 # 0
ASD_77 # 0 ⇈
j123123 # 0 ⇈
ASD_77 # 0 ⇈
JloJle4Ka # 0 ⇈
> Как мы видим большой разницы между кодом нет
Какой багор ))))))
JloJle4Ka # 0 ⇈
Есть же слово «auto».
ASD_77 # 0 ⇈
ISO # 0 ⇈
ASD_77 # 0 ⇈
guest # 0 ⇈
Тем не менее я не спорю, что вывод типов в TS сделан намного лучше.
Но сранивать С++ и TS глупо: это языки для разных задач.
А вот если сравнивать TS с JS, Ruby, PHP и Python, то я пожалуй соглашусь, что TS выглядит очень хорошо
Desktop # 0 ⇈
такая себе мантра. и на js, и на крестах можно написать веб-сервер. и на js, и на крестах можно написать гуйню. да в общем куски фронтенда можно написать на том и на том. в чём разные задачи?
guest # 0 ⇈
Перепиши на JS
Desktop # 0 ⇈
ISO # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
ты ведь именно так и делаешь? 😉
bormand # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
Сколько ядер ни возьми, JAWA встанет раком на сборке мусора, т.к. памяти может не хватить, Jawa же говнище)
guest # 0 ⇈
JloJle4Ka # 0 ⇈
Боюсь, чем больше ядер, тем больше придётся докупать памяти, ведь JAWA настолько анскильная, что на каждый тред копирует стек!
guest # 0 ⇈
Вообще открою страшную тайну: нет смысла иметь тредов больше, чем у тебя ядер
JloJle4Ka # 0 ⇈
mootools
> Вообще открою страшную тайну: нет смысла иметь тредов больше, чем у тебя ядер
А если у меня четыре ядра, но они двойные? Можно иметь 8 тредов?
guest # 0 ⇈
>двойные
гипертрейдинг?
Сильно зависит от задачи, но в общем случае можно считать их отдельными ядрами
guest # 0 ⇈
mootools
guest # 0 ⇈
Или более простой пример: 32 треда обрабатывают запросы пользователя, а 1 тред выполняет в фоне таски, в то время как ядер всего 32.
JloJle4Ka # 0 ⇈
Это для софтварных тредов. На инициализацию хардварных тредов ты потратил слишком много времени.
> 32 треда обрабатывают запросы пользователя, а 1 тред выполняет в фоне таски, в то время как ядер всего 32.
Переключение контекста нынче недёшево...
guest # 0 ⇈
В большинстве сред есть для этого таймер, который будет их выполнять, а в современном мире есть и корутины.
Правда если задачи блокирующие и без блокировки их не переписать, то ты в жопе.
guest # 0 ⇈
в теории смысла нет, на практике бывает удобнее сделать поток, и не писать МНОГО КОДА для корутин или пула или асинхронщины
Инструменты пока что слабоваты
ISO # 0 ⇈
Для CPU-bound задач — да. Для IO (когда тебе надо серануть в сеть/прочитать диск и ждать ответа) — вполне себе имеет.
JloJle4Ka # 0 ⇈
guest # 0 ⇈
Но если ты можешь переписать код на select/poll/CompletionPorts то нет смысла держать треды в спящем состоянии.
В котлине есть корутинная либа ktor например, это обертка вокруг тех самых полов.
Если тебе нужно обработать 44 запроса,ты просто создаешь 44 корутины.
Все они работают на тредпуле размером с кол-во ядер.
Если какая-то корутина "блочится", то на самом деле она не блчится, а передает управление другой корутине
JloJle4Ka # 0 ⇈
Всё, что прикасается к Jawa и JWM – превращается в ложь, обман, предательство и растрату ресурсов компьютерна.
guest # 0 ⇈
не нравится котлин, возьмите asyncio из питона
guest # 0 ⇈
Азаза. Jawa-отгрызок пытается хоть как-то повысить перформанс )))))))))
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
Я до 2019 для написания и проверки скриптушни обходился ноутбучным i5 третьего поколения. Обходился бы и сейчас, но хромолисовинды оборзели и стали вытекать из 8ГБ, а это уже был максимум, который туда можно было вставить.
Если б можно было туда впердолить ещё памяти, хватило бы до 2025 года.
bormand # 0 ⇈
Да нифига... у меня довольно долго был i5 3570k, купленный ещё до падения рубля. Не ноутбучный правда, так что он и сейчас вполне юзабелен.
i7 8700k буквально пару-тройку лет юзаю.
guest # 0 ⇈
Desktop # 0 ⇈
жаль, в 2000 символов не помещается. плохо Плэнер* Скрепер html-формы разработал
* https://ru.wikipedia.org/wiki/Плэнер
bormand # 0 ⇈
В 8 раз точно сольёт, avx то нету. Но может хоть до уровня опенссл дотянет...
guest # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
Там можно не срать в кучу, например? А инты нормальные там есть?
bormand # 0 ⇈
Там есть инты, флоаты, линейный кусок памяти и отдельный массив для указателей на функции. В общем-то больше там нихуя нет, даже неструктурных jmp'ов.
Дейкстре бы понравилось.
guest # 0 ⇈
я почему-то думал это JVM, а это весьма годно
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Ассемблер со вкусом джавы.
guest # 0 ⇈
И кто бы ни пробовал его переписать -- получалось нечитаемое говно ))
bormand # 0 ⇈
Ну это как с тредом, где сишную обработку ошибок через goto пытались переписать без него. Получалось только хуже и нечитаемее.
guest # 0 ⇈
ASD_77 # 0 ⇈
bormand # 0 ⇈
ASD_77 # 0 ⇈
bormand # 0 ⇈
ISO # 0 ⇈
???????
guest # 0 ⇈
хотя это же не вывод типов, это система типизации другая
guest # 0 ⇈
ASD_77 # 0 ⇈
guest # 0 ⇈
Хотя конктерно это пример спорен. Я не уверен, что хочу широёбиться по функции ища что она возвращает
ASD_77 # 0 ⇈
guest # 0 ⇈
ASD_77 # 0 ⇈
JloJle4Ka # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
JloJle4Ka # 0 ⇈
Да он школьник, делает домашку, ололо школоло на говнокоде!
ASD_77 # 0 ⇈
j123123 # 0 ⇈
раз считаешь что кто-то твой тупсрипт будет реально юзать заместо крестов и сишки, при наличии того же Rust, Nim, D
guest # 0 ⇈
ASD_77 # 0 ⇈
JloJle4Ka # 0 ⇈
ASD_77 # 0 ⇈
ASD_77 # 0
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
ASD_77 # 0 ⇈
bormand # 0 ⇈
CEHT9I6PbCKuu_nemyx # 0 ⇈
http://web.archive.org/web/20120124144026/habrahabr.ru/users/andoriyu/
Он на всех сайтах умудряется наживать врагов.
guest # 0 ⇈
А кто -1-й?
> Откуда: США, California, Santa Barbara
Ого
CEHT9I6PbCKuu_nemyx # 0 ⇈
К сожалению, вебархив не сохранил 7157-ю страницу рейтинга. Хотя можешь посмотреть, кого утопили в 2007-м:
http://web.archive.org/web/20071013092534/http://habrahabr.ru/people/unhabred/page1/