Обновить
86
0

Пользователь

Отправить сообщение
Вы рассуждаете с точки зрения логики языка JavaScript. Но эта особенность — не часть языка, а часть конкретной системы управления памятью. Эта система вам ничего не «должна». В частности, у вас нет гарантий того, какой объем памяти будет ассоциирован со строкой, и как там вообще всё будет оптимизировано.
Этого нет в спецификации JavaScript, так что странно надеяться на такое. Даже если сможете, это будет возможностью конкретной среды исполнения. Для Google Chrome я не знаю способов. Но факт остаётся фактом — в V8 у строк есть скрытая ссылка на «родителя» или нескольких «родителей».
Нет, ссылка находится в самой строке small. Об этом вся статья.
Почему не сделать явную очистку?
huge = undefined;
Потому что это не поможет. Ссылка на большую строку останется в small.
Это не утечка, так и должно быть. Мусор сначала накапливается, а не чистится сразу. И если наращивать память по 15Мб в секунду, то где-то несколько сотен мегабайт и должно быть в пике. С применением clearString() будет та же картина и в Chrome.
Интересно. Но всё же нет. Я добавил вашу функцию к своим тестам и вот что вышло:
console.log(Test(test_arr,clearString));
console.log(Test(test_arr,stringCopy));
console.log(Test(test_arr,clearString2));
console.log(Test(test_arr,clearString3));
752.80500005465
1093.955000047572
309.3099999241531
262.0650000171736

Несколько прогонов — тот же результат. И у меня в цикле как раз миллион итераций. То есть ваша функцию всё же медленнее. По памяти предлагаю не считать временный массив (если он вообще создаётся), который GC обязательно удалит — это не тот расход памяти, о котором заявлено в статье в качестве проблемы.

Не знаю точно, почему у вас другие результаты, но хочу обратить ваше внимание на способ тестирования. Например, компилятор оптимизатор вот это в теории вообще может выкинуть:
'Some text'.split('').join('');

Ведь результат нигде не используется.

К тому же у вас искусственная строка, а нам для чистоты эксперимента нужно чистить именно «грязные» строки.

Поэтому в моих тестах я из большой строки нарезаю много маленьких, которые ссылаются по разным адресам на большую. Это помешает оптимизатору мешать тестированию, какой бы он ни был. Далее, в самом цикле результат мы не выкидываем сразу, а обязательно куда-то сохраняем, это тоже мешает потенциальному оптимизатору искажать результаты. Я не эксперт в V8, а просто рассчитываю на разумный подход оптимизатора. Возможно, я что-то не учёл, тогда прошу обратить на это моё внимание.
Будет медленнее, чем встроенные функции. Но можете попробовать, напишите свою clearString() — протестируем, сравним скорость. Собственно, .split('').join('') — это и есть побайтовое копирование.
Этот «дилетант» прочёл всю спецификацию JavaScript всех версий от корки до корки. И вообще, у него может быть Firefox, где проблемы нет. Но заказчик всё же позвонил этому «горе-профи».
Формально отличий нет. Первым делом происходит автоматическое приведение к числу, которое и творит всю магию, то есть получаем либо число, либо хотя бы NaN. А дальше уже вычисляется сама операция, которая ничего не делает.

Из той же серии:
str = str * 1;

Экономим символы в коде:
str-=0;
str*=1;
Столкнулся с этим при разработке браузерного расширения. Все условия соблюдены: оно постоянно висит в памяти, делает периодически ajax, и складывает кусочки в объект-кэш (чтобы не повторять ajax по одним и тем же адресам).
Не совсем так. Токсичность — модный термин. И точного определения нет. Точнее, мы сами его формируем потихоньку, но он ещё не созрел. Но я не согласен, что это тупо негатив. Иначе нужно просто использовать термин «негатив», и не придумывать сущности без надобности. И применительно к Тостеру всё немного сложнее, чем вы описали. Давайте не будем вставать ни на чью сторону. Ни на сторону автора, ни на сторону отвечающего, а рассудим логически.

Первое, что нужно понимать — это где область пересечения интересов. И это важно. Автор вопроса хочет получить ответ, ему важно решить проблему. А отвечающих эта проблема не касается напрямую, у них нет необходимости давать ответ, они за это деньги не получают. Даже наоборот — отвечающие тратят своё время. Получаются изначально неравные условия. Так что это не отвечающие должны соответствовать хотелкам автора, а в первую очередь автор должен соответствовать хотелкам отвечающих. Поэтому если отвечающий ценит красоту кода или приверженец какого-то стиля, то это нужно как минимум уважать. Это цена ответа. Иначе, как вы верно заметили, проще пройти мимо. Так что если код автора реально говно, ему на это намекнули, то пусть ценит хотя бы это, даже если проблема не решена. Возможно, другой отвечающий будет более щедрым. Ещё большой вопрос, зачем вообще отвечать. У кого бы какие цели ни были — надо быть готовым дать что-то взамен ответа, а не требовать ещё больше.

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

Далее, часто так бывает, что авторы вопросов дают задания. Например, есть какая-то ошибка — найдите. Есть неработающий код — исправьте. Займитесь отладкой моего кода. Допишите недостающий функционал. Конечно, задание завуалировано под вопрос, но по сути это работа. В результате отвечающие воспринимаются, как бесплатные рабочие (по сути рабы), которые всё сделают и решат даже без спасибо, за так.

И наконец, не редко бывает, что проблемы вообще нет, или автор её почему-то тщательно скрывает. Например, автор хочет на JS изменить содержимое DIV быстро и незаметно. К этому можно подступиться с разных сторон, но нужно понимать, зачем это, чего автор хочет добиться, какой ценой, какие условия — свой сайт или чужой, он выступает как пользователь браузера, или у него iframe с рекламой, или он пишет своё расширение, а может его проблему вообще проще решить на бекенде.

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

В общем, чтобы не получать «негатив», как вы его называете, нужно всего лишь: 1) точно сформулировать вопрос 2) грамотно оформить его, описать достаточно понятно, без ошибок, привести примеры кода (если надо), скрины (если надо), запихнуть под спойлер (если большие) и т.д. 3) дать понять, что автор перерыл весь интернет, внимательно читал документацию, но ответа не нашел 4) адекватно выбрать парочку тегов. 5) При этом соблюдать все прочие правила ресурса, которые вполне логичны. Вот и всё. Просто?

Если сложно, то можно за деньги. Тогда интересы меняются местами. Уже не автор вопроса заинтересован в отвечающих, а консультант заинтересован в клиенте. Или фриланс — там за деньги помогут решить задачу, выполнят работу. Но это уже другая история, в которой можно полноценно придираться к фрилансеру или консультанту. И чем больше придирок, тем дороже работа, логично, не правда ли?

Соглашусь с вами только в том, что бывают крайности, которые ни в какие ворота не лезут, кто бы кому что ни был должен. Оскорбления, бесполезные высеры, бред, неадекватность и т.п., которые ни для души, ни для дела. Такое плохо как со стороны автора, так и со стороны отвечающего, равно как и в любых других ситуациях в жизни.
Прежде, чем ответить на вопрос, я захожу в профиль автора и смотрю, какие у него вообще есть вопросы, а также, отмечает ли он хорошие ответы решениями. Если есть вопросы с решениями, то я захожу в каждый такой вопрос и смотрю, сам ли автор отметил решение, или ему помогли. В итоге я делаю вывод, стоит ли тратить время на этого человека.
Сделайте в списке вопросов, пожалуйста, отметки о решении другим цветом, если решение выбрано голосованием, а не автором вопроса. Например, можно сделать красивым синим или сине-зелёным цветом. Если есть хотя бы одна отметка от автора, то зелёный, иначе синий.
Вот эти отметки
image
А по-моему, хорошая идея давать права. Это же вики стиль. Ведь модератор подтягивается обычно через несколько часов, а то и сутки, за это время вопрос протухает.

Единственная проблема — вандализм. Но это можно же по-умному решить. Например, сначала правки премодерируются, затем спустя какое-то время пользователь набирает скрытую репутацию и переходит в режим постмодерации. Если начнёт хулиганить, то легко можно вернуть в старый режим, либо зафиксировать скрытую репутацию на нуле, либо забанить. Это примерный концепт, осталось детали обдумать. Например, можно дать автору право откатить правку и заблокировать данного куратора.

Даже уже сейчас можно просканивароть логи и начислить репутацию. Только я бы не учитывал до определённого порога нарушения правил по неопытности, касательно глупых вопросов и комментариев. То есть правила нужно разделить на категории. Например, пусть good — количество хороших правок вопросов (подтвержденных модератором), fool — количество нарушений нейтральных правил, bad — количество вредоносных нарушений со злым умыслом.
Тогда если (good - max(fool-10, 0) - bad*20 > 5), то отключать постмодерацию.
Если задавший вопрос нарушает правила, то дать ему замечание — нормально.
Пример: вопрос, который легко гуглится, или вопрос, на который нельзя дать однозначный ответ.

К слову, токсичность — это не то, что вы думаете. При общении с токсичным человеком вы не заподозрите, что он к вам плохо относится, но вам станет хуже, а на что вы это спишите — другая история. И в целом на ресурсе Q&A практически невозможно быть токсичным, потому что либо твой совет помогает, либо нет, это легко проверяется.
Сначала накодят что-то, а потом задним числом сочиняют спецификацию

Называется Agile. И внезапно это удобно и эффективно, хотя и не везде.
Это СМИ в реестре РКН отсутствует.
На сайте есть заблокированный URL, но там новость от 9 июня 2018, а сам сайт не в блоке.
P.S. Где картинку искать?
Сразу вспомнилась 11-я серия «Рука помощи» из сериала «Любовь, смерть и роботы»:
Кадр


Также вспоминается фильм «Гравитация».
защитить пользователей интернета от контента

Дальше можно не читать.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность