Войти
ФлеймФорумСофт

Границы применимости JavaScript (6 стр)

Страницы: 13 4 5 6 7 8 Следующая »
#75
17:47, 14 июня 2017

kipar
> проверяет. Если массивы всегда попадаются из трех элементов, она заанроллит
> цикл

А зачем ты мне рассказываешь про еще большую оптимизацию, когда речь шла о том, что ява не несет пенальти вынужденной проверки параметров?
Если оптимизатор посчитает, что выиграет от этого - он может сделать так как ты говоришь. Так может сделать любой абсолютно оптимизирующий компилятор любого языка, не только Явы.
Но он не обязан и не проверяет то, что в метод пришёл массив из int-ов. А речь шла про это.


#76
17:51, 14 июня 2017

entryway
> судя по графику ниже.

Это не график, а просто рисунки "фломастером" для презентации.

#77
18:18, 14 июня 2017

Fla
> Пропустил все неудобные вопросы, молодец.
Просто у тебя так пригорает, что я даже не знаю в какую сторону убегать :)

> Эм. Ну да. Было изначально. Только дырявое, кривое, и неспецифицированное
Это ты про JS говорил, скажи, что еще и не кроссбраузерное :)

Хотя по правде я не имею привычки реагировать на всякие вбросы типа "кривое, косое, глючное, неправильное, фиолетовое, короткое" , ну да ладно.

> Как JS относится к скорости рисования полигонов OpenGL'ем?
Да никак в принципе, но к количеству мешей отношение имеет :)
> 5000 сюзан
Ладно... 500 000 мячиков :)

#78
18:41, 14 июня 2017

entryway
> так как информация о типах присутствует изначально
Еще есть один маленький плюс в том, что компиллятор дает по рукам больно погромисту за несоблюдение типов, из за этого на порядок меньше ошибок и матов на этапе отладки :)

#79
18:46, 14 июня 2017

=A=L=X=
> ява не несет пенальти вынужденной проверки параметров
Нет, линкер в Java все равно должен проверить, что ему дали правильные типы. В jvm ты можешь положить кучу рандомных object'ов перед тем как сделать invoke. На этапе загрузки может быть выброшен java.lang.VerifyError. Так что пенальти есть, просто оно AOT. del, не буду скатываться до вашего уровня

Аналогично V8 может (и умеет) линковать пачку функций вместе, заранее проверяя типы перед пачкой вызовов. https://wingolog.org/archives/2011/06/08/what-does-v8-do-with-that-loop
Если ты пишешь жутко динамический код и eval'ишь или рефлексируешь все подряд, то ССЗБ, у тебя будет плохой перформанс и в Java, и в JavaScript. Если ты пишешь нормальный код, то проблем с перформансом у тебя не будет.

entryway
Время исполнения сильно выигрывает за счет отсутствия разделения на short-path'ы и deopt-bailout'ы и проверок на них. А еще в wasm нет исключений и garbage-collector'а, никакого managed call stack'а, это тоже позволяет молотить байты почти в таком же окружении как у крестов.
А твой оптимизирущий компилятор может заинлайнить даже небо, даже аллаха, потому что никакого динамизма нет.
Считай, что wasm - это такой LLVM IR для веба.

bodja
Ты для начала на вопросы ответь. Что там с мертвым стандартом из начала прошлого десятилетия? Что там с async/await'ом и генераторами? Что там с тем, что ты не понимаешь что такое AJAX и что такое JSONP в частности? Что там с тем, что ты считаешь, что компилятор на java делает мертвый язык ближе к java? JavaScript в таком случае ближе к крестам, что уж там. Что там с живыми огромными порталами, где каждый день выходят новые игры на флеше?
> Ладно... 500 000 мячиков :)
Я тебе уже сказал, меряться письками я с тобой не буду. Вбей webgl performance test в гугл и рефлексируй сколько хочешь.
И перестань пожалуйста постить свои демки, 6 фпс это, конечно, достижение, но пожалей людей.
Первый раз, типа, не считался? Долго будешь свои же правила на своем же поле менять?

#80
19:25, 14 июня 2017

Fla
> Нет, линкер в Java все равно должен проверить, что ему дали правильные типы
> del, не буду скатываться до вашего уровня

Куда ты скатился уже дальше некуда скатываться. На ходу переобуваешь тапки - уже про линкер вспомнил, как будто бы про него хотя бы слово звучало.
Неуч, не позорился бы.

#81
19:32, 14 июня 2017

Вoт появился WebGL, почему бы не появиться Web-C, Web-C++ или Web-Java?
Когда-то думал на эту тему (15 лет назад) и задавался вопросом: Если тэг <script> универсален, почему в нём нельзя задать type=text/pascal, type=text/lisp, type=text/fortran и т.д.
У системы столько разных файлов, а браузером поддерживается лишь JavaScript и Бейсик…

Но, со временем привык и не парился…

P.S.: А вы вернули меня к тем воспоминаниям…

#82
19:39, 14 июня 2017

Alikberov
> Вoт появился WebGL, почему бы не появиться Web-C, Web-C++ или Web-Java?

По хорошему им всем надо сесть, договорится, и сделать опять нечто типа Явы, конкретное, расширяемое, с пакетами, серверами обновлений, кучей разумных либ общего назначений, запаянных на HTML 5.
Т.е. как бы они там сейчас ни колобродили, но в этом разумная суть - язык достаточно строгий чтобы компилится в достаточно быстрый натив, но с мощными биндингами прямо в DOM HTML 5 с канвасами, WebGL-ями и прочим.
И всё, в принципе даже про JS можно было бы даже забыть, но в целом его наличие не будет мешать - скриптовый язык всегда пригодится.

#83
19:40, 14 июня 2017

=A=L=X=
Лол, я ждал, что ты упрекнешь меня в том, чем сам полтреда занимаешься.
Но опозорился тут ты, потому что я говорю не про статический линкер, а про динамический, который classloader. Статического линкера в Java, так то вообще нет, поэтому тут даже уточнять не надо. Так и запишем, =A=L=X= - Java-хелловордщик, который не знает как работает его язык.
Каждый раз при загрузке .class файла (а она происходит постоянно, на каждый импорт и Class.forName) динамический линкер делает AOT проверку типов, еще до JIT'а.
Почему Java анализировать и проверять типы перед JIT'ом можно, а V8 - нельзя, мне не до конца понятно. Но, думаю, потому что ты не понимаешь предмета обсуждения.

Alikberov
> Если тэг <script> универсален, почему в нём нельзя задать type=text/pascal, type=text/lisp, type=text/fortran и т.д.
Был text/VBScript в Internet Explorer, но он умер.
> Вoт появился WebGL, почему бы не появиться Web-C, Web-C++ или Web-Java?
Ты можешь прямо сейчас собрать C или C++ в llvm ir, llvm ir в wasm, а браузер за тебя соберет wasm в машинный код. Wasm уже есть в хроме, лисе, и сафари. В едже за флагом.

#84
19:48, 14 июня 2017

Fla

Я не знаю зачем ты продолжаешь втаптывать свою репутацию в грязь.
Мы говорили о том, что у JS в рантайме в куче мест придётся проверять что пришло в аргументах, а ты пытаешься зачем то сопоставлять это с компил-таймом (неважно JIT это или не-JIT, компил-тайм он по определению компил-тайм).
Такое ощущение, что умные слова выучил, а до конца не понял что они значат.

А если вообще вспомнить какие я высказал тезисы, когда в тему зашёл, то всё остальное что ты пытаешься оспаривать, типа степени живости Dart - тоже нелепо. Не в степени живости его была суть, вообще не в этом, это не требовало оспаривания вообще.
Я прихожу к выводу, что ты тут ведя дискуссию сразу с тремя собеседниками, причём размазывая каждому ответы на 10 подветок тупо забываешь о чём была речь два поста назад и начинаешь хренью страдать "заради искусства".
Лишь бы языком почесать.
Но чешешь ты его тоже неправильно.
Ладно, хватит, реально утомил.

#85
19:57, 14 июня 2017

=A=L=X=
> а ты пытаешься зачем то сопоставлять это с компил-таймом
Ты точно читаешь, что я пишу? У тебя в Java каждый класс в отдельном .class лежит и ты их можешь независимо обновлять, classloader при загрузке твоего кода вынужден проверять типы для каждого invoke'а. В том числе это обеспечивает возможность JIT'а, т.к. он уверен, что никакой код не может дернуть метод с неправильными типами аргументов.
V8 делает примерно то же самое, только вместо байткода у него исходник. Так что нет никакого VariantAdd'а.
> Такое ощущение, что умные слова выучил, а до конца не понял что они значат.
Сказал человек, который не знает что такое classloader в Java.

#86
20:00, 14 июня 2017

Fla
Ты противоречишь написанному в последнем посте на прошлой странице от создателей Wasm. Глупо палишься.

#87
20:20, 14 июня 2017

https://hacks.mozilla.org/2017/02/a-crash-course-in-just-in-time-jit-compilers/
Вот, четко и по делу статья о том что и как. Видно, что рантайм проверки там довлеют и масса усилий направлена на способы их вытеснения в разумные уголки кода, но достаточно шага в сторону, чтобы предположения оптимизатора полетели к черту и произошел регресс, перекомпиляция, и т.п. Более того даже замечается, что если особо извратится, то производительность может упасть ниже интерпретатора.

#88
20:20, 14 июня 2017

=A=L=X=
При чем тут wasm,  когда ты последние две страницы убеждаешь меня, что V8 не может джиттить JavaScript как Java, и там будут VariantAdd'ы? А потом оказывается, что ты не знаешь как эта самая Java не то что джиттит, не знаешь как она вообще работает.
В wasm вообще никакого JIT'а не надо, его проще в x86 собрать сразу. И уж тем более там нет никаких VariantAdd'ов. Он для этого и разрабатывался.

#89
20:31, 14 июня 2017

Fla
> Ты для начала на вопросы ответь.
> Что там с мертвым стандартом из начала прошлого десятилетия?
Да ничего, работает пока :)

> Что там с async/await'ом и генераторами?
Не знаю, лично у меня модели грузятся и парсятся прекрасно в фоне, чего и вам желаю :)
Но если у тебя есть, что сказать, чем эта свистелка рвет другие языки, я внимательно выслушаю :)

> Что там с тем, что ты не понимаешь что такое AJAX и что такое JSONP в
> частности?
Не, не, не , а канеш понял что AJAX это куда круче обычных сокетов XD

> Что там с тем, что ты считаешь, что компилятор на java делает мертвый язык
> ближе к java?
Полноценный ОПП, типы, классы - тебе не достаточно?

> Я тебе уже сказал, меряться письками я с тобой не буду.
Ну я это понял, ты не можешь даже JS и в профиле у тебя практически пусто, а вот уметь в ЧСВ у тебя отлично получается :)
Нахапался понтов на хабре и тут их проецируешь :)

Страницы: 13 4 5 6 7 8 Следующая »
ФлеймФорумСофт

Тема в архиве.