"Paint, давно не видел"
потому что с приходом canvas каждый школьник уже сделал себе по два, и никого этим не удивишь.
но для обучения прикольно, хотя бы с канвасом можно познакомится
NFly: понял что вы хотите, можно попробовать, но уверен что это будет медленнее.
по первой моей ссылке был тест скорости вставки
array create push 10M: 510.000ms
array create by index 10M: 1668.000ms
push быстрее чем присваивание по индексу (a[i] = ...)
а тут у вас будет цикл с присваиванием.
к тому же я в предыдущем комменте описал альтернативный способ как сделать очередь с ценой вставки и извлечения O(1). а вы (сдвиг ссылок) предлагаете уже O(N).
NFly: бегло прочитал ваши коменты в др ответе, не совсем понял что за переприсваивание ссылок.
вы упомянули там с++ в принципе в js можно было бы сделать очередь как в с++ (лет 10 назад страдал таким) то есть каждый элемент ссылается на след объект, и главный обьект очереди имеет ссылку на первый и последний, тогда добавление и удаление обьектов тоже очень простые - поменять пару ссылок. но будет кончено оверхэд по памяти изза доп обьектов (типа ListItem которые хранят указатели на соседние такие элементы и на хранимые обьекты).
указаннное мной решение работает быстро и не требует доп обьектов. в js массивы и так мощная штука можно вполне обойтись ими.
Stalker_RED: к вам никаких претензий. ваш алгоритм простой и работает прекрасно при небольших длинах очереди (менее 1000-10000 элементов конечно заморачиваться не стоит на это). просто нужно было с чем то сравнить. самому было интересно как эту задачу оптимизировать.
"В случае FIFO, геттер должен проверять не выходит ли текущее значение за диапазон. И вероятно, сбрасывать переполнение придется чаще. "
нет не требуется.
сброс if (overflowCount > 10000) нужен исключительно для того чтобы в очереди не скопилось очень много лишних элементов (например мы только пишем туда и ничего не извлекаем, если этого не делать там скопятся милионы элментов, вставку это сильно не замедлит, но память будет расходовать, поэтому эта очистка исключительно для экономии памяти).
очередь всегда не более миллиона. реальное ограничение длины происходит в if (b.length > maxLen) b.length = maxLen; при копировании.
Посторонним В.: нормальное решение. поэтому и писал чтобы уточнили для чего вам это. часто бывает люди решают проблемы которые сами же себе и создают. а истина где то рядом.
успехов!
ps можно отметить решением, может кто-то еще захочет файлы сессии искать
roman9966: nexe для консольных nodejs программ. хотя особо я его не ковырял. Backbone - это фронтовая часть приложения, которая в браузере электрона запускается. и нет, его туда не упаковать.
тк все значения перечислили на этой страничке, а не отдельно - уверен что и используется в апи оно только здесь