LINUX.ORG.RU

Ответ на: комментарий от qulinxao3
 while (true) {
...
 pad += ch
...
}

Там складывание строк в цикле, если он больше 10.
Во 1, как бы для такого есть repeat.
Во 2, складывание строк в цикле на язычке с вм, это - оторванные яйца.

Почему lua?

Хорошо набрасываешь, кстати. Как твой тред, так годный срач.

crutch_master ★★★★★
()

Открыл предыдущую тему.

  • 2 слова в заголовке
  • пустой пост
  • 10 страниц срача

Годно…

wandrien ★★
()
Ответ на: комментарий от crutch_master

ROFL /

речь про момент до репита. и после скандала с отвалом поделки.

до деприкейтида успели вкрутить O(log n) по времени конструктор заполнителя

- который {если оценивать амортизационо} - почти всегда[т.е на малых] не быстрее чем лобовое str+=ch И так n раз (что для js совсем не stringBuffer :(

- однако при каком то достаточном(хз) N всё таки быстрей ибо заменяет квадратичное{при линейно добавление символа в результате (n*(n + -/+ 1))/n т.е O(n**2)} на лог-квадратичное O(log(n)**2)

qulinxao3
() автор топика
Ответ на: комментарий от qulinxao3

Вот за что действительно можно ругать жс, так это за то, что нет stringBuffer'а/stringBuilder'а и больших чисел. А также за то, что есть всратые даты без форматирования.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

имхо не нужно.

ваще полезней как слои абстракции несколько языков - если всё тащить в один язык - получается питон с батерейками в лучшем случае.

зы. почти уверен что есть какой npm модуль(и) с сервисом стрингбилдера (там же по сути вектор менеджить)

qulinxao3
() автор топика
Ответ на: комментарий от wandrien

сходи по ссылке на гитхаб и посмотри версию в которой прикручен вышеприведённый сырец - по датам это было до репита?

зы. repeat() он как реализован кстати?

qulinxao3
() автор топика
Ответ на: комментарий от wandrien

ок: ок: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects...

c заменной

    var rpt = '';
    for (var i = 0; i < count; i++) {
      rpt += str;
    }

на

    var rpt = ''; 
    for (;count;count >>= 1) {
      if (count & 1)  rpt+= str;
      str += str;
    }

если ещё и точить «как для серьёзной » - с выбором по условию некоторой опытным путём - меньше в лоб иначе «логарифмом».

Там складывание строк в цикле, если он больше 10.

Во 1, как бы для такого есть repeat.

Во 2, складывание строк в цикле на язычке с вм, это - оторванные яйца.

crutch_master складывание логарифм раз а не в лоб

qulinxao3
() автор топика
Последнее исправление: qulinxao3 (всего исправлений: 2)
Ответ на: комментарий от wandrien

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

Вот именно. Потому что lua не является языком общего назначения. Как и js: что из браузера прокинуто, то и будет. И там сейчас очень много всего уже. Больше никуда не надо это поделие тащить. Как и lua, но его и не тащат к счастью. Я выше писал, что в крайнем-прекрайнем случае можно и нодой воспользоваться. Но по-хорошему, это инструмент для сборки фронтенда, не более того. Короче, границы применимости стоит соблюдать. И еще чем хорош lua, там нет фронтенд-инженегров. Ни единого! А так язык конечно убогий, но для встройки норм.

bread
()
Последнее исправление: bread (всего исправлений: 1)
Ответ на: комментарий от bread

эффект широкой базы.

не каждый стал Марадоной - но успех лат.Америки в ногомяче достаточное доказательство пользы широкого охвата.

js хорош как бейсик во временна оные -

js как серверсайд(на речекряке веб-макак) - а по старому как просто универсальный язык ( wsh не взлетевший ибо так случилось) поэтому node.js а ща quickjs c обычным ffi

qulinxao3
() автор топика
Последнее исправление: qulinxao3 (всего исправлений: 1)
Ответ на: комментарий от bread

что из браузера прокинуто, то и будет. И там сейчас очень много всего уже.

А какое мне дело до API браузера? Мне не в браузере его запускать.

Аргумент уровня «на Си написано ядро винды! не пишите на Си!!».

И еще чем хорош lua, там нет фронтенд-инженегров. Ни единого!

См. выше. Будто в консоли есть дело до фронтенд-инженеров.

Больше никуда не надо это поделие тащить.

Это эмоции. Что по фактам?

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

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

Да все они такие. Один сисадмином сделан на коленке для парсинга логов, другой как шаблонизатор для хомпаг, третий для снежинок. Ничего плохого в этом нет, кроме того, что вдруг начинают на этом писать всё на свете. Я вот работаю с перловым легаси. Вы не представляете сколько понаписали на нём в 90-е. Того, что по уму на жаве надо было писать. Вот и с js сейчас похожая история, и даже хуже. Хотя мало что ли технологий сейчас?

bread
()
Ответ на: комментарий от wandrien

Будто в консоли есть дело до фронтенд-инженеров.

Ну и чем руби не устраивает в консоли? Есть mruby если оригинал сильно жирный. Про перл не спрашиваю, хотя чем он хуже js именно в консоли я не знаю. По-моему всем лучше.

bread
()
Ответ на: комментарий от wandrien

наоборот

«консоль» извлекает выгоду от того что язык развивается не_последними_(далеко)_людьми_в_теории_компиляции_и_прочего_RS по причине наличия большого рынка фронтенд0макак.

qulinxao3
() автор топика
Ответ на: комментарий от bread

можно и обероном(подставь любое) в консоли - однако js зарулит python ;)

qulinxao3
() автор топика
Ответ на: комментарий от bread

https://bellard.org/tcc/

tcc поэтому так и на quickjs

ps. я как раз стороник что-бы система была - бы по максимому в сырцах(т.е бинарь это тень мастер-сырца с прозрачной когерентностью(с правильным резолвом когда бинарь подлочен исполнением) ) и в процессе исполнения jitилось

qulinxao3
() автор топика
Ответ на: комментарий от bread

Ну и чем руби не устраивает в консоли? Есть mruby если оригинал сильно жирный.

Да в общем-то, можно и mruby. Тем более, что код и так уже есть. Но будущее этого языка сильно туманно, а я стараюсь писать такой код, относительно которого не возникнет вопросов как и на чем его запускать.

Может это чисто психологическая заморочка. Но мне иногда приходится собирать код на Си, которому по 20 лет, если не больше, и с мелкими правками он прекрасно работает.

Поэтому:

  • C
  • sh
  • Теперь вот JS

Реально по эксплуатационным характеристикам не вижу между ruby и JS принципиальных различий.

В одном наломали дров с вызовом методов без () и 4-мя разными видами лямбд, в другом с ; и со странным приведением типов. В целом суть та же.

Про перл не спрашиваю, хотя чем он хуже js именно в консоли я не знаю. По-моему всем лучше.

Перлом не владею. Так, на уровне «читал какой-то файл, чтобы отыскать баг». Смысла писать на еще одном ЯП не вижу в виду того, что перл ушел куда-то в область поддержки легаси.

wandrien ★★
()
Ответ на: комментарий от wandrien

Реально по эксплуатационным характеристикам не вижу между ruby и JS принципиальных различий.

Между языками возможно (хотя я так не думаю). Но у руби есть батарейки в комплекте, а в quickjs я вижу некий огрызок от posix, и всё. То есть это прямой аналог lua с нескучным со скучным синтаксисом.

bread
()
Ответ на: комментарий от wandrien

Аргумент уровня «на Си написано ядро винды! не пишите на Си!!»

А и правда, нужно ли писать на C что-то кроме ядра? Пишут только потому, что аналогов C по большому счёту нет, и раз уж почти всё ПО на C, то и приходится с ним бодаться. Эффект основателя типа. А скриптух как js целый выводок, и за исключением браузера он везде лезет на чужую поляну, где всё утоптано уже другими. Заменить он ничего не заменит, только добавит биоразнообразия нашему зоопарку (хотя там всё разнообразие только на уровне синтаксиса).

bread
()
Ответ на: комментарий от qulinxao3

зы. почти уверен что есть какой npm модуль(и) с сервисом стрингбилдера (там же по сути вектор менеджить)

Обычно делают тупо join массива строк. Там нужна нативная реализация, чтобы избежать копирование строк вм и создания лишнего. Через вызовы нативного кода хз, насколько это будет адекватно по производительности. bignum тоже, конечно, где-то есть, но сделаны они были через строки/массивы.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от qulinxao3

зы. repeat() он как реализован кстати?

Хитро.

var str = "abcdefg0123456789".repeat(16 * 4 * 1024 * 512);
Не сожрёт 500 мб, пока не начнешь str трогать. Но, если сделать, например charAt или length, он своё возьмёт (но не больше, чем нужно).

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 3)
Ответ на: комментарий от crutch_master

типо ленивость/задержка реализации пока нет чтения свойства зависящего от значения (по хорошему get .length не обязательно создаёт полный объект, впрочем как и чтение - но это всё реализация-специфично)

ссыль? на внутреннюю (вероятнее всего сишную) реализацию .repeat(n) (имхо что-то подобное stl vector[])

qulinxao3
() автор топика
Ответ на: помню. %*;: ? неа. от qulinxao3

Хорошо, понятно.

Мне вот что-то покоя не дают те тесты, которые господин vitalif там предлагал ( https://github.com/vitalif/langs-performance/ )

Ладно, с lua 5.3 vs 5.4 более менее понятно. Вроде. Там в 5.3 совсем простая lua_Unsigned luaH_getn (Table *t) {} буквально пересчёт каждый раз, в 5.4 она намного хитрее написана.

Но вот сейчас погонял его тесты еще и в quickjs - так они даже медленнее чем в lua получаются.

node около 5с, lua54 около 14с, quickjs около 30с.

Или такие тесты вообще не показатель и никак смущать не должны?

Toxo2 ★★★
()
Ответ на: комментарий от Toxo2

Ну так-то конечно тот тест кастрированный, не кастрированный писать задолбаешься :))

Для js, я так понимаю, можно https://browserbench.org/JetStream/ погонять какой-нибудь, им вроде v8 и спидор-манки тестят. Попробуй, раз интересно :)

Или остальные, чо там есть ещё… Octane, Kraken, Sunspider?

vitalif ★★★★★
()
Последнее исправление: vitalif (всего исправлений: 1)
Ответ на: комментарий от fernandos

upper() против toUpperCase(), ну такое, знаете ли, ладно, может, вам нравится шифт нажимать.

code completion подставляет.
Стфтическая Типизация в Typescript рулит ;)

grim ★★☆☆
()
Ответ на: комментарий от qulinxao3

на внутреннюю (вероятнее всего сишную) реализацию .repeat(n) (имхо что-то подобное stl vector[])

Там на каком-то своём языке, который потом во что-то компилируется при сборке.
https://github.com/frida/v8/blob/master/src/builtins/string-repeat.tq

crutch_master ★★★★★
()
Ответ на: комментарий от grim

Стфтическая Типизация в Typescript рулит ;)

Безусловно, радует, как он сейчас стаёт всё популярнее и популярнее.

fernandos ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.