О спасибо, а то я от лени просто рандомом высоту наращивал — не просто каждой точке, а какой-то случайной точке на карте с указанным разбросом по X и Y, и таких точек 50 штук на карте. Каждый раз когда на точку выпадает кон — её высота увеличивается на 5, начальная высота -100. Рандом не простой а Гауссовый из библиотеки d3js — он больше ближе к середине выдаёт (с простым квадраты получались). Чёрные — это гоные пики типа. Примерно так выходило (10 сек для карты 150х150, AthX2 1.9G, Linux, Chrome).
Весьма удобно по сравнению с <%= ... %>-вставками, тем более, что не нужно переименовывать файл в *.js.erb — а значит никаких проблем с подсветкой синтаксиса. Единственное неудобство (для development окружения) — это при изменении в дереве ассетов, необходимо удалять tmp/cache/assets (чтобы новые, добавленные, файлы добавились и в хэш window.project_assets) — но не думаю, что существует решение, по этому вопросу очень мало информации в интернете (как-то приходилось искать).
Не могу взять в толк, как же тогда вот этот бенчь? Причём проверенный мной уже на Ruby 2.1.2p95. От приведённого в ссылке мой результат отличается не сильно. Выполнение .select{ |i| i%2 == 0 }.map{ |i| i*2 } на миллионном массиве
Результат (real):
0.423104 # без lazy
1.065144 # с lazy
А вот результат увеличенной в два раза цепочке .select{ |i| i%2 == 0 }.map{ |i| i*2 }.select{ |i| i%4 == 0 }.map{ |i| i + 1 } и 50-ти миллионного массива:
52.351417 # без lazy
92.194890 # с lazy
Если увеличить цепочку ещё — то результат аналогичен. Идея хороша, но с реализацией уже где-то не сошлось.
Я просто представляю веб-страницу у которой есть отметка — сколько пользователей сейчас онлайн. Т.е. каждый запрос каждого пользователя — это и запрос количества онлайн пользователей. В этом случае что-то вроде User.where("last_online_time > ?", 10.minutes.ago) вряд ли окажется быстрее аналогичной операции в Redis.
Весьма интересное предложение. В принципе если использовать отдельную базу — то и с пустыми ключами проблем не будет. Как нибудь на недельке найду время протестировать Ваш подход — и сравнить размер базы и производительность, сейчас увы занят. Не до конца понял Вашей идеи — идея интересна если только Вы предлагаете не для каждого пользователя использовать свой сет, а всего иметь 10 сетов — на каждую минуту (в принципе можно и на каждые 10 секунд свой сет) — и в текущий (текущей минуты) сет добавлять вошедших. Надеюсь я хотя б чуть понятен. Вообще говоря у меня под подозрением скорость поиска по сету при его большой длине.
Ну да — или ещё проще использовать встроенный в Rails метод assets_data_uri. И не нужен никакой inline() и rails-sass-images не нужен. Только зачем делать всё это «руками»?
data URI хэш в итоговый HTML не идёт, эта магия только для того, чтобы облегчить внедрение псевдоизображений на страницу + автоматическая генерация необходимых стилей. Взгляните на вышеприведённую демку — в ней подробно расписано: что имеется во вьюхе, что идёт в html, а что в стили.
<%= ... %>
-вставками, тем более, что не нужно переименовывать файл в*.js
.erb
— а значит никаких проблем с подсветкой синтаксиса. Единственное неудобство (для development окружения) — это при изменении в дереве ассетов, необходимо удалятьtmp/cache/assets
(чтобы новые, добавленные, файлы добавились и в хэшwindow.project_assets
) — но не думаю, что существует решение, по этому вопросу очень мало информации в интернете (как-то приходилось искать).lazy
..select{ |i| i%2 == 0 }.map{ |i| i*2 }
на миллионном массивеРезультат (real):
А вот результат увеличенной в два раза цепочке
.select{ |i| i%2 == 0 }.map{ |i| i*2 }.select{ |i| i%4 == 0 }.map{ |i| i + 1 }
и 50-ти миллионного массива:Если увеличить цепочку ещё — то результат аналогичен. Идея хороша, но с реализацией уже где-то не сошлось.
User.where("last_online_time > ?", 10.minutes.ago)
вряд ли окажется быстрее аналогичной операции в Redis.<input type=image ... />
assets_data_uri
. И не нужен никакойinline()
иrails-sass-images
не нужен. Только зачем делать всё это «руками»?data URI
хэш в итоговыйHTML
не идёт, эта магия только для того, чтобы облегчить внедрение псевдоизображений на страницу + автоматическая генерация необходимых стилей. Взгляните на вышеприведённую демку — в ней подробно расписано: что имеется во вьюхе, что идёт в html, а что в стили.