Вячеслав Егоров

Вячеслав Егоров

Темы
Неделя
Apr 6, 2015 → Apr 13, 2015

Архив недели @mraleph

Понедельник


всем привет! меня зовут Вячеслав и эту неделю я вещаю из под капота JS - здесь темно и повсюду C++... отвечаю на вопросы про V8 и перформанс

утро понедельника начинается с чтения LLVM Weekly - на прошлой неделе ничего интересного, впрочем, не случилось llvmweekly.org/issue/66

а вот демка скрытой проблемы с производительностью при использовании accessors mrale.ph/irhydra/2/#gis… / gist.github.com/mraleph/88ef8e…

... смотреть надо что заинлайнилось во вкладке Source
notion image
notion image

на работе сегодня выходной, тут в твиттере - тоже. чувствую себя героем фантастического рассказа "Позвоните!" fantlab.ru/work65898

обнаружил у себя в рюкзаке распечатку статьи "Common Compiler Optimisations are Invalid in the C11 Memory Model" mpi-sws.org/~viktor/papers…

казалось бы при чем тут JS? а вот при чем: docs.google.com/document/d/1ND…

Вторник


в JS сообществе очень популярно изобретать велосипеды, вот и для меня это самый удобный способ добраться до работы
notion image

еще случайный факт об о мне: в моем "музыка для программирования" плейлисте youtube.com/watch?v=_2xa46… соседствует с youtube.com/watch?v=foGkU6…

адаптивная оптимизация одной картинкой
notion image

Среда


начнем утро головоломкой из разряда "и на старуху бывает проруха" jsperf.com/es6-map-vs-obj…

... напихали в объект кучу свойств obj[keys[i]] = i и почему-то читать эти свойства быстрее c ключами из Object.keys(obj), а не из keys

никто что-то не спешит отгадывать мою головоломку, а я меж тем пью кофе из своей любимой JS-кружки
notion image

отгадка на загадку: дело в том, что obj[key] быстрее всего работает когда key - это интернализованная строка.

... массив keys содержит строки результаты конкатенации, которые в V8 не интернализованы, а objectKeys содержит интернализованные строки.

... потому что имена свойств внутри объекта V8 хранит в интернализованных виде -> Object.keys(obj) возвращает массив интернализованных строк

🔥Тред (@mraleph)
в сорцах chromium есть прикольные тулзы: вот, например, одна раскладывает бинарник на части и рисует с помощью d3
notion image

... можно кликая найти из какого файла пришла куча кода в бинарник, сама тулза здесь -> chromium.googlesource.com/chromium/src/+…

про строки (я от этих картинок даже прослезился, вспомнив как конспекты одногрупниц ксерил)
notion image
notion image

Четверг


сегодня был самый безвопросый день - все JS программисты видимо готовятся к выходным

Пятница


внезапно натолкнулся на вопрос про таинственное замедление JS кода в Chrome stackoverflow.com/questions/2942…

... глянул на это дело в IRHydra по быстрому: оказывается это связано с тем, что сломалась одна оптимизация, которую я делал 3 года назад

... карма. вот так сделаешь оптимизацию, уйдешь в другой проект - а оптимизация все живет и живет своей жизнью и периодически ломается

... отгадка - что сломалось и как чинить, будет через час :)

🔥Тред (@mraleph)
добрался до написания ответа на утренний вопрос stackoverflow.com/questions/2942… и фикса этого бага codereview.chromium.org/1077113002/

чем короче фикс, тем сложнее объяснить почему что-то в оптимизаторе не работает без него

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

не знаю как вас, а меня расстраивает, что я не могу написать [1,2,3,4].reduce(Math.max) в JS

ну т.е. я, конечно, могу написать, но толку с этого особо не будет.

Воскресенье


окей сегодня последний день моего задумчивого молчания в этом твиттере

я мог бы набросить под конец, признавшись, что я не особо-то люблю JavaScript, ну да всем это и так известно :)

тут как-то купил пельмени в магазине; вот покупные пельмени - это как готовый язык программирования, а самодельные - это когда сам написал

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

продолжая тему пельменей - у покупных пельменей внутри сплошной NaM (Not-a-Meat), он получается если сложить говядину с undefined.

стоит ли сделать digest из всех технических вопросов, на которые я ответил? (исключая секретные рецепты моей любимой еды)

stefan-marr.de/papers/pldi-ma… <- скоро все смогут писать быстрые виртуальные машины на коленке, поэтому надо рубить бабло пока эта тема горячая

я думаю если устану писать код, напишу книгу "Еда и Программирование"

вот допустим гречка, столь любимая на просторах нашей необъятной родины, это очевидная метафора на Pascal.

на тебя одинаково странно смотрят, когда ты говоришь "я ем гречку" и "я пишу на Паскале"

окей, всех с прошедшей неделей, поднимаю бокал за вас, пишущих на JS без страха и сомнений
notion image

вот краткое содержание недели mrale.ph/blog/2015/04/1…, ловите меня на mrale.ph и в основном твиттере @mraleph. всем пока!

и еще, смотрите на языки программирования за пределами JS: C++, Haskell, Rust, Go, C#, Lua, Dart, OCaml, Clojure, Agda, всёвсёвсё

это не особо-то полезно в рамках тотальной тирании JS в вебе, но чего тираны всегда боятся? ЗНАНИЙ.

знания расширяют угол обзора... кто видел Erlang, тот на колбэки смотрит косо, хоть Erlang в остальном и как-то пффффф

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

🔥Тред (@mraleph)
на часах 11. хочу еще набросить - пока не пробило 12 и пароль не отобрали. многие думают, что в программировании главное - писать код.

мне же кажется, что в программировании главное - это хорошо подумать и ничего не написать... ненаписанный код = несломанные тесты, ляпота!

Понедельник


вот еще интересный вопрос: есть сериалы про агентов FBI, есть сериалы про врачей, а есть ли сериалы про программистов?

последний сериал про программистов, который я видел выглядел как-то так (главный программист в центре \o/)
notion image

всё, 12:07, мой пароль превратился в тыкву. вот вам стихотворение Фернандо Пессоа напоследок
notion image

Ссылки