The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Основная ветка Python адаптирована для сборки для работы в браузере, opennews (??), 29-Ноя-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


28. "В основной ветке Python появилась возможность сборки для раб..."  –4 +/
Сообщение от ИмяХ (?), 29-Ноя-21, 11:03 
Всё новое - хорошо забытое старое. Ещё 15 лет назад пайтонскрипт и джаваскрипт конкурировали между собой за эту веб-нишу. Джваваскипт вышел победителем в этой конкуренции, потому что питон оказался слишком тормозным и жрущим память.
Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

32. "В основной ветке Python появилась возможность сборки для раб..."  –4 +/
Сообщение от Аноним (8), 29-Ноя-21, 11:10 
Глядя на вебню, жрущую гигабайты, лагающую, и вечно текущую… Ну да, ну да, победитель. На бэке то всё равно питон, как ни хотели протащить жс, ничего вменяемого не получается.
Ответить | Правка | Наверх | Cообщить модератору

106. "В основной ветке Python появилась возможность сборки для раб..."  +1 +/
Сообщение от kai3341 (ok), 30-Ноя-21, 00:02 
> Глядя на вебню, жрущую гигабайты, лагающую, и вечно текущую… Ну да, ну
> да, победитель. На бэке то всё равно питон, как ни хотели
> протащить жс, ничего вменяемого не получается.

Ситуация немного сложнее. За тормоза могу пояснить. Причин несколько

Дело в том, что не каждый JS-ный синьор задумывается о структурах данных. 99% структур данных -- это стандартные массивы и Object. И проблема в том, что они не всегда подходят. Например, ребята просто обожают использовать массивы для проверки на включение там, где нужно использовать Set. На ровном месте сложность растёт с линейной до квадратичной. О том, что можно создать собственную структуру данных, знают лишь избранные, а ключевое слово `class`, с которого начинается создание своих структур данных, сегодня в JS подобно ругательству

JS-ник сегодня дохера функци-анальщик. Я не против ФП, но против отрыва от реальности. Дело в том, что JS -- это чисто ООП язык, хоть и с функциональными элементами. И оптимизации, гарантированные в ФП, невозможны в JS. В мире JS считается зашкваром перебирание элементов коллекции через `for ... of`. Забавно, что как только я заменил обработку больших коллекций с `forEach` на `for ... of`, приложение резко стало работать ощутимо быстрее. Я не говорю "в топку forEach/map/filter" -- я указываю на ограничения

Ещё один рак дохера функци-анальщика -- иммутабельность в каждой дырке. Иммутабельность -- это инструмент, позволяющий реализовать ссылочную прозрачность. Прекрасная штука. При этом JS-ник забывает про цену иммутабельности -- необходимость пересобирать заново структуры данных. Особенно больно на больших списках. И ладно, когда речь о redux. Плохо, когда пересборка структур данных происходит вообще в каждой дырке. Я хочу сказать, что мутабельность -- это тоже инструмент, позволяющий сильно поднять производительность. Как извлечь все выгоды мутабельности и сохранить ссылочную прозрачность -- просто обернуть мутируемую структуру данных в объект с одним ключом

Вы прослушали тираду "Дорогие коллеги! Давайте прекращать кодить и учиться программировать!"

Ответить | Правка | Наверх | Cообщить модератору

107. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от Аноним (104), 30-Ноя-21, 00:56 
>> Дорогие коллеги! Давайте прекращать кодить и учиться программировать!

А они не поняли

Сейчас новую партию коллег с курсов выпустят

Ответить | Правка | Наверх | Cообщить модератору

108. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от Аноним (59), 30-Ноя-21, 03:56 
Как функци-анальщик (велик и могуч русский язык) не соглашусь.

Во-первых, я перешёл с функциональной Scala и JavaScript больше ФП, чем ООП в современном виде. forEach / map / flatMap в Scala используется и в хвост и в гриву, и на производительность никто не жаловался.

Во-вторых, это заблуждение. На современных движках эти forEach / map / flatMap по производительности отстают от for of в 2 раза, грубо говоря. Это вообще ничто учитывая производительность, если не ворочать миллионами объектов.

Трансформация данных гораздо удобнее и понятнее, есть явный separation concern чем лапша в цикле.

Конечно можно и одним проходом делать с reduce и аккумулятором с ранним выходом (упс, нельзя).

И только если нужна максимальная производительность имеет смысл использовать обычные циклы.

Все доп. библиотеки обработки данных типа rambda заточены под ФП и переиспользование кода офигенно.

Также накладывает ограничения React, который во-первых пересоздаёт замыкания и отбрасывает их на каждом рендере. А во-вторых использовать его с кастомными типами практически невозможно.

И React это "чистый" ФП... функции... функции функций и т.д.

Да, я лучше список пробегу фильтруя, чем буду тр...ся с Set. По-сути нужно создавать новый Set из старого.

Можно, конечно извратиться используя useRef ссылки, но оно того в 99.99% не стоит.

Те это не моё нежелание, а невозможность / ограничение фреймворка (думаю у других не лучше).

И вообще если вы работаете с миллионными списками вы что-то делаете очень неправильно. А со списком в 100 элементов из БД...его хоть как медленно обрабатывай это миллисекунды.

Наверняка в Node.js другая ситуация, но там гораздо больше ООП, сам API этому способствует.

Ответить | Правка | К родителю #106 | Наверх | Cообщить модератору

117. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от kai3341 (ok), 30-Ноя-21, 07:39 
Сразу лайк за развёрнутый и конструктивный ответ

> forEach / map / flatMap в Scala используется и в хвост и в гриву, и на
> производительность никто не жаловался.

Не путайте функциональные языки с JS =) К API претензий нет, но есть разница, что под капотом. В ФП-языках оптимизация хвостовой рекурсии гарантируется, в то время как в императивных не всегда допустима

> Во-вторых, это заблуждение. На современных движках эти forEach / map / flatMap
> по производительности отстают от for of в 2 раза, грубо говоря.
> Это вообще ничто учитывая производительность, если не ворочать миллионами объектов.

Когда элементов мало -- разницы действительно нет

> Трансформация данных гораздо удобнее и понятнее, есть явный separation concern чем лапша
> в цикле.

Вопросов нет. Действительно, когда элементов мало, а их преобразование/обработка сложны и многоэтапны -- forEach/map/etc не просто незаменимы, они best practice
Хозяйке на заметку. Методы map/filter есть только у массивов, но отсутствуют в Set и итераторах. Это зашквар. Для сравнения, в python можно скормить map/filter любой итерируемый объект, получив на выходе генератор. В JS мы умеем только в массивы

> Все доп. библиотеки обработки данных типа rambda заточены под ФП и переиспользование
> кода офигенно.

Я не знаком с rambda, поэтому поверю вам на слово

> Также накладывает ограничения React, который во-первых пересоздаёт замыкания и отбрасывает
> их на каждом рендере

Следовательно, чтобы не пересоздавать замыкания, коллбэки надо выносить из render()

> А во-вторых использовать его с кастомными типами практически невозможно

Не увидел ни единого препятствия. Что я только ни пихал ни в props, ни в redux state. Держи себе в голове ссылочную прозрачность -- и всё.

> И React это "чистый" ФП... функции... функции функций и т.д.

React.PureComponent? Возвращайтесь из мира розовых единорогов :)

> Да, я лучше список пробегу фильтруя, чем буду тр...ся с Set. По-сути
> нужно создавать новый Set из старого.

"Нас устраивало O(N^2), пока N не начал расти" (с) Хабр
Всегда держим в уме cardinality. На малых объёмах массивы могут оказаться незначительно быстрее Set. А чтобы получить линейную алгоритмическую сложность, стоит применить Set

> Можно, конечно извратиться используя useRef ссылки, но оно того в 99.99% не
> стоит.

Я не про рефы. Рефы вообще о другом. Кстати, особенно в случае class based компонентов рефы действительно рулят. Особенно когда мы генерим хитрую структуру из того, что накликал/навводит пользователь. Чем гнать тонну данных вверх/вниз, есть смысл на каждом уровне определить метод генерации части этой структуры. Вообще говоря, я пересказываю суть HMVC

> Те это не моё нежелание, а невозможность / ограничение фреймворка (думаю у
> других не лучше).

"Не верю!" (с) Станиславский.

> И вообще если вы работаете с миллионными списками вы что-то делаете очень
> неправильно. А со списком в 100 элементов из БД...его хоть как
> медленно обрабатывай это миллисекунды.

На самом деле при использовании for ... of разница между 100 элементами и 5000 оказалась не столь существенной. Бэк насиловал БД намного дольше, но fulltext в MySQL -- это пока грустная история

> Наверняка в Node.js другая ситуация, но там гораздо больше ООП, сам API
> этому способствует.

Пфф, на бэке есть альтернативы. На фронте пока нет

Ответить | Правка | Наверх | Cообщить модератору

125. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от Аноним (59), 30-Ноя-21, 12:02 
Хвостовую рекурсию очень легко потерять в ФП. По-сути в обычном коде её и нет, для этого надо специальным образом (считай переписывать) писать функцию. Шаг влево, шаг вправо - и она опять теряется. В Scala даже специальная аннотация, чтобы компилятор выдавал ошибку, если не смог в хвостовую рекурсию.

По-ответам я понял что вы используете class-based компоненты React. Я, естественно, говорил про компоненты-функции и hooks.

Замыкание невозможно вынести из функции, на то оно и замыкание (как получить доступ к данным из  lexical scope?). А чистых callback в React практически нет, очень мало.

Если использовать Set, то добавление объекта в него не поменяет ссылку самого Set. И перерендера компонента не произойдет. Либо иметь отдельный флаг и постоянно их синхронизировать, либо пересоздавать новый Set из старого. А новый из старого можно получить только интегрированием всех элементов. Вот O(1) взлетело до O(N) на добавление элемента в Set и все его преимущества улетели. Я хотел бы посмотреть на код с Set от вас (желательно с функциями-компонентами), как вы это обходите.

Ответить | Правка | Наверх | Cообщить модератору

131. "В основной ветке Python появилась возможность сборки для раб..."  +1 +/
Сообщение от Аноним (61), 30-Ноя-21, 18:14 
> иметь отдельный флаг и постоянно их синхронизировать, либо пересоздавать новый Set из старого

ложная дихотомия. Вот тебе попрактиковаться дизайн апи:

    const names = useSet();
    // Создастся настоящий Set.
    // Но хук вернет не его. Хук вернет прокси над ним.
    // К настоящему сету доступа не имеешь.

    names.add('Andy');
    // Прокси перенаправляет вызов настоящему сету.
    // После этого прокси пересоздается, чтоб поменять ссылку.
    // А внутренний сет живет до конца лайфсайкла компонента.

    names.has('John');
    // Прокси перенаправляет вызов настоящему сету.
    // Конкретно в has() ссылку менять не требуется - ничего не поменялось.

Pеализуется такой апи минут за 10. Ну ладно, за 30, если с юнит-тестами. Под прокси имею в виду "ведет себя как Set, крякает как Set, и может даже умеет проходить условие instanceof Set".

Ответить | Правка | Наверх | Cообщить модератору

139. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от Аноним (59), 30-Ноя-21, 21:30 
Прикольно, кажется я что-то такое раньше пытался сварганить, но Hermes не умел до недавнего времени в Proxy (пишу на React Native).

По-сути, как видишь тут надо пересоздавать Proxy каждый раз, возможно с несколькими функциями / замыканиями. Если брать "старый добрый React" с отбрасыванием функций и побыстрее будет.

А если брать именно алгоритимическую сложность, то я сначала хотел бы с ней столкнуться в профилировании и переписать именно этот кусок. Но это, наверное, надо миллионнами объектов ворочать (те про коллекции, когда обычно в state пара вложенных объектов, да 20-100 элементов массива)

Ответить | Правка | Наверх | Cообщить модератору

137. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от kai3341 (ok), 30-Ноя-21, 20:57 
> По-ответам я понял что вы используете class-based компоненты React. Я, естественно, говорил
> про компоненты-функции и hooks.
> Замыкание невозможно вынести из функции, на то оно и замыкание (как получить
> доступ к данным из  lexical scope?). А чистых callback в
> React практически нет, очень мало.

Поэтому я топлю за классы. Класс инстанцируется перед монтированием компонента, в этот момент в this определяются все атрибуты. Впредь render() может быть вызван многократно, но повторного инстанцирования класса не происходит. Значит, ссылки на коллбэки тоже не изменились. PROFIT

> Если использовать Set, то добавление объекта в него не поменяет ссылку самого ...

Я вообще о другом. Я говорил о структурах данных. О том, что часто вижу паттерн фильтрации массива и исключения из него элементов другого массива. И тут ребята стабильно используют Array.includes вместо Set.has, хотя разница между O(N) и O(1)

Что до ссылок -- не бойтесь использовать воображение :) В собственных типах вы вольны определить метод создания поверхностной копии. Если определить мутабельные внутренние контейнеры как приватные члены класса, и работать с ними через API самих типов, то вы получить и производительность мутабельности, и легковесную поверхностную копию

Ответить | Правка | К родителю #125 | Наверх | Cообщить модератору

154. "В основной ветке Python появилась возможность сборки для раб..."  –1 +/
Сообщение от Аноньимъ (ok), 01-Дек-21, 11:04 
> Хвостовую рекурсию очень легко потерять в ФП. По-сути в обычном коде её
> и нет, для этого надо специальным образом (считай переписывать) писать функцию.

Ну, нет.
Сильно от ЯП зависит, в схеме например сложно её не получить.
Также сильно от стиля и чистоплотности программиста.

Ответить | Правка | К родителю #125 | Наверх | Cообщить модератору

110. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от Аноньимъ (ok), 30-Ноя-21, 06:28 
>Дело в том, что JS -- это чисто ООП язык

Ну охереть.

>Ситуация немного сложнее. За тормоза могу пояснить. Причин несколько

Всё немного проще, ненужно ваши сраные реакты месить, а нужно делать максимально простой жс код дополняющий мать её веб страницу, а не рисующий сайт на стороне клиента.

Ответить | Правка | К родителю #106 | Наверх | Cообщить модератору

123. "В основной ветке Python появилась возможность сборки для раб..."  –2 +/
Сообщение от kai3341 (ok), 30-Ноя-21, 09:47 
> Всё немного проще, ненужно ваши сраные реакты месить, а нужно делать максимально
> простой жс код дополняющий мать её веб страницу, а не рисующий
> сайт на стороне клиента.

А пацаны из ФБ то и не знали! Чтобы приложение не тормозило, достаточно старого советского (текст виден только премиум пользователям Opennet)

Ответить | Правка | Наверх | Cообщить модератору

124. "В основной ветке Python появилась возможность сборки для раб..."  –1 +/
Сообщение от Аноньимъ (ok), 30-Ноя-21, 10:53 
Фейсбук эталонный пример мерзкой помойки.
Его существовать не должно в принципе.
Ответить | Правка | Наверх | Cообщить модератору

135. "В основной ветке Python появилась возможность сборки для раб..."  –1 +/
Сообщение от kai3341 (ok), 30-Ноя-21, 20:36 
> Фейсбук эталонный пример мерзкой помойки.
> Его существовать не должно в принципе.

То ли дело контач с одноклассниками!

Ответить | Правка | Наверх | Cообщить модератору

155. "В основной ветке Python появилась возможность сборки для раб..."  –1 +/
Сообщение от Аноньимъ (ok), 01-Дек-21, 11:09 
Не могу сделать однозначный выбор.
Но уверен что линкедин хуже их всех.
Ответить | Правка | Наверх | Cообщить модератору

156. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от kai3341 (ok), 02-Дек-21, 01:48 
> Но уверен что линкедин хуже их всех.

Сразу понятно отношение человека к работе

Ответить | Правка | Наверх | Cообщить модератору

111. "В основной ветке Python появилась возможность сборки для раб..."  –1 +/
Сообщение от Аноньимъ (ok), 30-Ноя-21, 06:36 
>Забавно, что как только я заменил обработку больших коллекций с `forEach` на `for ... of`, приложение резко стало работать ощутимо быстрее.

1. Это выглядит как недороботка движка а не проблема языка. Но я не эксперт.

2. А тут я уверен абсолютно. Ваши большие каллекции и есть первопричина тормозов вашего, гм, приложения. Прекратите пожалуйста у клиента в браузере свои каллекции мурыжить. И сразу веб тормозить перестанет.

Ответить | Правка | К родителю #106 | Наверх | Cообщить модератору

122. "В основной ветке Python появилась возможность сборки для раб..."  –2 +/
Сообщение от kai3341 (ok), 30-Ноя-21, 09:45 
> 1. Это выглядит как недороботка движка а не проблема языка. Но я
> не эксперт.

Всё крайне просто. На каждый вызов функции создаётся новый фрейм с локальными переменными

> 2. А тут я уверен абсолютно. Ваши большие каллекции и есть первопричина
> тормозов вашего, гм, приложения. Прекратите пожалуйста у клиента в браузере свои
> каллекции мурыжить. И сразу веб тормозить перестанет.

Уже бегу доносить пользователям, что им не следует запрашивать тысячи записей, даже если это их сознательное решение. По умолчанию там кстати обычно влетает около сотни записей, но пользователь волен сменить умолчания. В особых случаях может влететь более 10к записей -- это мегабайт 10 данных. С учётом пагинации (да, архаика, но очень экономит ресурсы) накладные расходы нулевые

Ответить | Правка | Наверх | Cообщить модератору

133. "В основной ветке Python появилась возможность сборки для раб..."  –1 +/
Сообщение от Аноньимъ (ok), 30-Ноя-21, 20:13 
> Уже бегу доносить пользователям, что им не следует запрашивать тысячи записей

Так это пользователи вас заставляют такие сайты делать?

> может влететь более 10к записей -- это мегабайт 10 данных. С
> учётом пагинации (да, архаика, но очень экономит ресурсы) накладные расходы нулевые

Накладные расходы нулевые на загрузку и парсинг 10к записей? В Жабаскрипт?

>накладные расходы нулевые

Так вы же точно точно сравнивали с решением выдающим уже готовый ШТМЛ клиентам, вместо вашего реакта?
Точно точно сравнили?
И разница получилась нулевая?

Ответить | Правка | Наверх | Cообщить модератору

134. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от kai3341 (ok), 30-Ноя-21, 20:25 
> Так вы же точно точно сравнивали с решением выдающим уже готовый ШТМЛ
> клиентам, вместо вашего реакта?
> Точно точно сравнили?
> И разница получилась нулевая?

Ооо, теперь понятно. То есть грузить 100500 раз вёрстку вместе с данными, по-вашему, эффективнее, чем подгружать единожды код вёрстки и по мере необходимости подсовывать только данные?

> Накладные расходы нулевые на загрузку и парсинг 10к записей? В Жабаскрипт?

Загрузка бесплатная -- в этот момент код не исполняется
Парсинг тысяч записей занимает единицы секунд -- дёшево для тысяч записей

Ответить | Правка | Наверх | Cообщить модератору

150. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от Аноньимъ (ok), 01-Дек-21, 05:27 
Сделайте две реализации и сравните.
Ответить | Правка | Наверх | Cообщить модератору

151. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от kai3341 (ok), 01-Дек-21, 06:08 
> Сделайте две реализации и сравните.

Лол. Перевожу на русский язык -- мы не понимаем различия между XML и JSON. HTML является нестрогим подмножеством XML, поэтому "эффективность" и "компактность" XML в полной мере справедлива для HTML. А ведь помимо данных, неэффективно упакованных в XML, мы каждый раз тащим и прочую вёрстку

Ответить | Правка | Наверх | Cообщить модератору

153. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от Аноньимъ (ok), 01-Дек-21, 10:50 
Что вы несёте.
Речь идёт о том насколько у пользователя сайт тормозит, а не о эффективности XML.

И дело вовсе не в том сколько мы тащим, хотя и в этом, а в том в какие моменты времени мы это тащим,  кто как и когда это парсит и отрисовывает.

Не говоря уже что кеширование для динамики никогда не работает.

И я не понял, вы вначале 10к записей пользователю заливаете, а потом уже на страницы разбиваете? Прекращайте это безобразие!

Напишите уже на коленке тест простой и сами сравните хоть на 1000 записей с текстом пускай по 100 слов на запись.

Ответить | Правка | Наверх | Cообщить модератору

157. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от kai3341 (ok), 02-Дек-21, 02:18 
> Что вы несёте.
> Речь идёт о том насколько у пользователя сайт тормозит, а не о эффективности XML.

Ну то есть мы не в состоянии задать вопрос, по какой именно причине у пользователя тормозит сайт. До джуна не дотягиваете. Подсказываю -- ответить на этот вопрос поможет профайлинг. И прямо говорю -- 99% тормозов происходят из-за медлительной сети

> И дело вовсе не в том сколько мы тащим, хотя и в этом, а в том в какие моменты времени мы это тащим, кто как и когда это парсит и отрисовывает.

Ага. Отсюда и далее начинаем штудировать, что такое AJAX и REST. Где сильные места и где слабые, что масштабируется и что нет. Даже от джуна требуется понимание этих базовых вещей

Из всех тех вещей, которые вы пока ещё не понимаете, хочу обратить внимание на нагрузку на бэкэнд. Рендеринг на бэкэнде потребляет много ресурсов CPU, что заставляет вас масштабировать сервера. Готовы ли вы лишиться части своей ЗП и пустить её на ненужные сервера, которые будут заниматься промышленным форматированием строк и генерацией HTML?

Вторая вещь, которую вы до сих пор не понимаете -- пользователь посещает сайт один раз или переходит со страницы на страницу? Сколько дублей данных получит пользователь по медленной сети, если отдавать ему отрендеренный HTML?

> Не говоря уже что кеширование для динамики никогда не работает.

Да. По этой же причине кэширование динамически отрендеренных HTML страниц тоже не работает. Поздравляю, вы сами сказали, что несёте бред.

> И я не понял, вы вначале 10к записей пользователю заливаете, а потом уже на страницы разбиваете? Прекращайте это безобразие!

Ничерта вы не поняли. Как именно я сформулировал эту мысль? Прочитайте ещё раз

> Напишите уже на коленке тест простой и сами сравните хоть на 1000 записей с текстом пускай по 100 слов на запись.

Предыдущие 2 пункта абсурдны и ещё 2 пункта демонстрируют отсутствие знаний. Если цитату вырвать из контекста, то к ней претензий нет -- бэк должен прочитать данные из БД и сериализовать их, потом данные надо передать по сети, потом парсинг происходит минимум за O(N) (алгоритмов парсинга JSON не изучал, поэтому точно не скажу)
Только в абсолютном значении разница между 10мкс и 100мкс мало заметна
Ещё забавный момент -- накладные расходы на 1 запись получаются меньшими при большем числе записей
И тут умный человек бы задал совсем другой вопрос -- уверен ли я, что пользователь прочитает все 10к записей. И тут ответ уже нет. Но я как бы ранее говорил, что умолчания настроены таким образом, чтобы пользователю в среднем влетало 100 записей. Только пользователь сам и сознательно может запросить больше -- я его не сдерживаю

Ответить | Правка | Наверх | Cообщить модератору

54. "В основной ветке Python появилась возможность сборки для раб..."  +2 +/
Сообщение от Аноним (-), 29-Ноя-21, 13:24 
> Всё новое - хорошо забытое старое. Ещё 15 лет назад пайтонскрипт и
> джаваскрипт конкурировали между собой за эту веб-нишу. Джваваскипт вышел победителем в
> этой конкуренции, потому что питон оказался слишком тормозным и жрущим память.

Жаль только, что о тех событиях ты знаешь только по слухам.
https://web.archive.org/web/20060522132352/http://shootout.a...
https://web.archive.org/web/20060924084722/http://shootout.a...
Тормозной жопоскрипт - в самом конце.
2008:
https://web.archive.org/web/20080616092357/http://shootout.a...
https://web.archive.org/web/20080615141859/http://shootout.a...


Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

112. "В основной ветке Python появилась возможность сборки для раб..."  –1 +/
Сообщение от Аноньимъ (ok), 30-Ноя-21, 06:37 
А могли бы няшный лисп использовать.
Ответить | Правка | Наверх | Cообщить модератору

126. "В основной ветке Python появилась возможность сборки для раб..."  +1 +/
Сообщение от Аноним (-), 30-Ноя-21, 12:53 
> А могли бы няшный лисп использовать.

Да все что угодно было быстрее ЖС.


ratio    language    score    ×
...
6.0    Lua    11.6    
7.2    Pike    9.7    1
7.7    Python    9.1    
8.4    Tcl    8.3    3
12    PHP    5.9    4
12    Perl    5.6    4
...
15    Icon    4.7    7
17    Ruby    4.1    2
76    JavaScript SpiderMonkey    0.9    9

Но теперь "это было давно и поэтому почти совсем не правда!" и "Вы фсе врети! ЖС быстрый из-за грамотного дизайна, а не потому что гугл и мурзилла вложили сотню миллионов в разработку движка!"

Ответить | Правка | Наверх | Cообщить модератору

130. "В основной ветке Python появилась возможность сборки для раб..."  +/
Сообщение от man man (?), 30-Ноя-21, 17:04 
> ЖС быстрый
> из-за грамотного дизайна
> грамотного
> дизайна

ну ок :/

Ответить | Правка | Наверх | Cообщить модератору

136. "В основной ветке Python появилась возможность сборки для раб..."  +1 +/
Сообщение от Аноним (-), 30-Ноя-21, 20:47 
>> ЖС быстрый
>> из-за грамотного дизайна
>> грамотного
>> дизайна
> ну ок :/

man sarcasm
Ну и да, обычно местные ЖСнкики таким макаром и аргументируют "техническое превосходство" ЖС - "глядите, есть V8, который супер-пупер быстр! Вот!".
А то, что до V8 (и мурзиловского аналога) ЖС был самым жручим и тормозным скриптовым ЯП - так "это было давно и поэтому непрвда!"(с)


Ответить | Правка | Наверх | Cообщить модератору

148. "В основной ветке Python появилась возможность сборки для раб..."  –2 +/
Сообщение от Аноним (61), 30-Ноя-21, 22:40 
> был

был

Ответить | Правка | Наверх | Cообщить модератору

105. "В основной ветке Python появилась возможность сборки для раб..."  +1 +/
Сообщение от Аноним (104), 29-Ноя-21, 23:20 
>> Джваваскипт вышел победителем

И гугл тут не причём

Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру