Pull to refresh
0
GrossHo@GrossHo

User

1
Subscribers
Send message
Была утилита, которая дампила все неиспользуемые блоки. Для каждого сдампленного блока запускался фильтр, разработанный специально под заданную таблицу. Качество фильтра позволило выявить 101% всех блоков. То есть 1% — все таки был мусор из-за ложного срабатывания. Потом каждый блок примеривали к другому, с тем, чтобы фильтр при объединении давал «добро». Да и глазами приходилось смотреть, чтобы выявить явную чушь. Как вспомню — вздрогну. Бекап бы не позволил такому случится :)
Один раз приходилось выделять 20Мбайт полезной информации из свободных 20Гбайт диска. Заняло три дня. Почти в ручную собирал мазайку удаленного MyISAM файла в FFS на FreeBSD. Некоторые любят вышивать крестиком, но это удовольствие — только для суровых челябинских админов. Получается, что на это подпишется хотя бы один человек. Вот только кто он — я без понятия.
В комментариях предлагаю обсудить, какие изменения в программном обеспечении придётся сделать в течение ближайших 8 месяцев, чтобы это учесть.
Готовится можно по разному. У меня, например, мыло и веревка уже припасены.
«Мужик, я ничего не понял, что ты сказал. Но ты мне близок. Ты… достучался до моего сердца.» (с) Джей и Молчаливый Боб наносят ответный удар.
На самом деле, пока не понял, как это может пригодится, но это одна из наиболее интересных статей за последнее време.
Конкретно против этого высказывания спорить не буду. Но и вы спорите не со мной.
Выделение памяти прежде всего зависит от условий задачи, и лишь уж потом — от используемых в ней инструментов (алгоритмов, библиотек и прочего). Данная задача выбивается из ряда обычных, поэтому и недовольство аллокатором или наслоенным поверх него темплейтом становится более вероятным. Серебряной пули нет. Правила русской рулетки того и не требуют.
Желательно, чтобы ОС имела интерфейс в помощь миграции листов памяти. Иначе все преимущество на контекстных переключениях съестся.
это мне напоминает 3.1415*ц
Спасибо, теперь кто-нибудь закодирует библиотеку конгресса США в Санта-Барбара.
придет… убьет… xQuery и CoutchDB — первая ласточоко… SQL — клеит ласты как умеет…
Кто такие — программисты?
RISC/CISC/VLIW — одного поля ягоды. Это не какая-то конкретная архитектура. Это классификатор микропроцессорных архитектур. Сферический конь, поскольку если рассматривать режимы процессоров, наборы команд, и т.д., то один и тот же процессор может одновременно попасть в несколько категорий. И по поводу википедиа: научиться правильно копипастить — это не есть цель моей жизни.
VLIW — Very Large Instruction Word — это не архитектура. Это описание машинного кода, когда инструкция несет параллелизм в себе. Когда оптимизация выполняется на уровне компилятора. Насчет SPARC — ничего не знаю, но вот минусовать правильные вопросы как-то становится очень по хабровски.
Само собой разумеется :) На обычных процессорах в последовательном исполнении получим O(n*n), что может дать и пузырек. Пример на python показателен тем, что в нем наглядно видно, что сортировать можно не только цифры, а все, для чего определима функция сравнения. Что же касается массивов, размерностью превышающих MaxThreads, то входной массив тогда лучше всего фрагментировать в несколько размерностью MaxThreads, после чего досортировать через MergeSort.
Эт для наглядности, и только. Понятно, что первый цикл может выполняться в параллель. Получаем, что уже не O(N^2), а O(N*k), где k = ОкруглениеДоМинимальнойЦелойГраницыСверху(N/MaxThreads). Если выполняется условие (0 < N <= MaxThreads) — то константа k выродится в единицу, откуда следует что в этом частном случае сложность будет O(N).
Вот пример для демонстрации работы данного алгоритма для языка python:
array_i = [94, 89, 238, 121, 244, 64, 175, 60, 166, 181, 77, 24, 111, 0, 47, 212, 68, 76, 174, 124, 40, 227, 123, 101, 58, 177, 148, 134, 36, 21]
array_k = [ 0 ]*len(array_i)
array_o = [ None ]*len(array_i)

for i1, c1 in enumerate(array_i):
    cnt = 0
    for i2, c2 in enumerate(array_i):
        if c1 > c2:
            cnt += 1
        elif c1 ==  c2 and i1 < i2:
            cnt += 1
    array_k[i1] = cnt

for i, k in enumerate(array_k):
    array_o[k] = array_i[i]

print "array_i =", array_i
print "array_o =", array_o
Думаю, это в планах: сразу после пункта «сделать землю квадратной».
тайминг умножаем на частоту памяти — поэтому смотрим тайминг:
15/1200000000
.0000000125
12/800000000
.0000000150

Это в том случае, если формула RAS+CAS+RCD — более менее верна.
Но увеличение быстродействия еще связано с количеством планок, а не только с тактовой частотой, поскольку включается режим перемежения банков памяти, что гипотетически способно увеличить скорость последовательного доступа до 2 раз, при переходе от двух до четырех банков памяти.
Не надо мне говорить, про удобство и разделение дизайна и кода.
А что, промолчать не трудно.
tidy — да. Чтобы менеджеры не порвали сайт своей версткой приходится использовать. А во фремах бывает удобней оставить «орфографию автара», иначе они потом возникают — почему текст свой не узнать. javascript блоки опять же без disable-output-escaping выглядят неествественно.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity