?

Log in

No account? Create an account

[icon] Всем бездельникам - Lorem Ipsum igitur, juvenes dum sumus
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (Мой сайт).

Tags:, , ,
Security:
Subject:Всем бездельникам
Time:05:55 pm
С 1-го по 13-е, говорите? Себе хуже делаете, товарищи. Кто не повредит печень - тот замерзнет, кто избежит первых двух бед - останется с мозгами, промытыми телевизором, кто убережется и от этого - ну да, прокачает своего эльфа до 89 уровня. Дело, конечно, полезное, но... грустно всё это.

Я вот занялся полезными вещами. Решил попрограммировать и воплотить в жизнь те идеи, на которые не хватало времени в конце прошлого года. В частности, решил улучшить качество нашей системы оповещений о стихийных бедствиях для пользователей iPhone и нашей программы StormAlert.
Суть такая: клиенты стали жаловаться, что не получают каких-то предупреждений, о которых узнают в последствии из СМИ. Мы стали смотреть, в чем дело. Выянилось, что мы оперируем географическими координатами, в то время, как информация о прогнозах размещается для т.н. forecast zones - зон, на которые поделена территория США. Информация эта доступна из разных источников, мы планируем к ним подключиться, но для начала нужно решить проблему привязки существующих Favorite Locations наших клиентов к этим самым зонам. Удалось найти данные о географической привязке зон, но... формат оказался существенно бинарным, и я допустил первую ошибку.
Я решил, что нет ничего лучше использования существующих велосипедов, и конвертировал проприетарный бинарный формат в XML-style XLS. Размер файла увеличился в 10 раз (до 186 МБ), и я решил, что буду работать с ним. Это была вторая ошибка. Урок, который я извлек для себя: никогда не работайте с большими объемами XML-данных, если цените свое и процессорное время. Я написал довольно простой код, максимально оптимизировал его, мне не нужно было искать по этому гигантскому файлу, я работал с данными последовательно, но... первоначальная оценка времени, требуемого для загрузки всего объема данных в SQL2008 оказалась равна 5-6 дням. После 12 часов работы оценка увеличилась до 25 дней непрерывной работы приложения. Performance Analyzer показал, что 99.5% времени тратится на разворачивание XML (это при том, что весь файл загрузился в RAM, pagefile у меня отключен и всё операции осуществлялись в быстрой DDR2!). Я предпринял пару попыток декомпозиции задачи, но результат оказался столь же печальным.
Пришла мысль, что я поехал не на том велосипеде. Человечество изобрело множество велосипедов - трехколесные, горные, ВМХ, тандемы. Моя же первая попытка заключалась в попытке проехать Tour de France верхом на велотренажере Кеттлер. Судя по скорости. В общем, я решил пересесть на шоссейник. 50 строк кода с чистого листа, использование библиотеки для чтения бинарика с использованием индексов - и - данные оказались в базе за 1 минуту. Процент ошибок из-за некорректных данных - 10%. Много, но как мне кажется, терпимо. Что-нибудь придумаем.

Программировать прикольно:)

Всем желаю отдохнуть деятельно! Не теряйте время! Carpe diem!
comments: Оставить комментарий Previous Entry Поделиться Next Entry


master_nemo
Link:(Link)
Time:2010-01-04 01:10 pm
>>с большими объемами XML-данных
гыыы!
какая идея! надеяться на быструю обработку такого монстра, набитого совершенно ненужной избыточностью и искусственной структурой как XML.

за что "люблю" гада БГ- он даже хороших программистов заставил считать угробищные раздутые решения считать за дефолтные.
(Ответить) (Thread)


torrio
Link:(Link)
Time:2010-01-04 01:16 pm
:-)) Грешен: но это не дефолтный путь, это путь наименьшего сопротивления.
(Ответить) (Parent) (Thread)


rioman
Link:(Link)
Time:2010-01-04 02:22 pm
Так XML это ж вроде не БГ, а опен-формат?
(Ответить) (Parent) (Thread)


master_nemo
Subject:ожидалось :)
Link:(Link)
Time:2010-01-04 04:10 pm
естественно я говорил не о конкретно каждой строчке кода или стандарта, а о главном разносчике этой идеологии. и вообще БГ он по умолчанию во всём виноват :)
(Ответить) (Parent) (Thread)


rioman
Subject:Re: ожидалось :)
Link:(Link)
Time:2010-01-04 04:12 pm
А как же Чубайс?
(Ответить) (Parent) (Thread)


master_nemo
Subject:Re: ожидалось :)
Link:(Link)
Time:2010-01-04 04:18 pm
во всём виноват билл гейтс - примерно 2 080 000 результатов
во всем виноват чубайс - примерно 27 400 результатов

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

Edited at 2010-01-04 16:20 (UTC)
(Ответить) (Parent) (Thread)


rioman
Subject:Re: ожидалось :)
Link:(Link)
Time:2010-01-04 11:03 pm
И не проверять первые ссылки на релевантность :)
(Ответить) (Parent) (Thread)


master_nemo
Subject:Re: ожидалось :)
Link:(Link)
Time:2010-01-04 11:11 pm
затем и приписка про форму запроса и поисковую машину- пока до практики не доходит мне нифига никто не верит что по русскому языку у яндекса до сих пор релевантность по фразам значительно качественнее.
(Ответить) (Parent) (Thread)


sam_sami4
Link:(Link)
Time:2010-01-04 02:42 pm
хм. я даже поняла о чем ты писал. значит, ты хороший рассказчик (:

а так ты прав. есть много всего более интересного, чем просто "с 1 и по 13е".
(Ответить) (Thread)


torrio
Link:(Link)
Time:2010-01-04 07:57 pm
Да, не сомневаюсь, что ты тоже занимаешься чем-нить полезным:)
(Ответить) (Parent) (Thread)


bobbik
Link:(Link)
Time:2010-01-04 03:06 pm
а вот rioman каждый день чистил снег :)
(Ответить) (Thread)


torrio
Link:(Link)
Time:2010-01-04 07:57 pm
Да он просто умница:) Есть фотографии Ромы с лопатой, кстати?
(Ответить) (Parent) (Thread)


bobbik
Link:(Link)
Time:2010-01-04 11:55 pm
чё вам всем сдались эти слайды...
(Ответить) (Parent) (Thread)


torrio
Link:(Link)
Time:2010-01-04 11:57 pm
Я просто собираю коллекцию фотографий формата "еврей с лопатой":) Причем лопата, предпочтительно, должна быть в руках.
(Ответить) (Parent) (Thread)


chirchik
Link:(Link)
Time:2010-01-04 07:45 pm
ну вот. я как раз думал - поработать завтра или покачать эльфа. опять же обязательства социальные взяты.

но программировать прикольно да. но я, пожалуй, приберусь в офисе. вот чо.

ну и эта. с наступившим.
(Ответить) (Thread)


torrio
Link:(Link)
Time:2010-01-04 07:56 pm
Ага, с новым годом:)
(Ответить) (Parent) (Thread)

serg14
Link:(Link)
Time:2010-01-04 09:22 pm
Программист 89 уровня ... бугога!

A вообще, я с тобой все-таки не соглашусь -- глобальная оптимизация обычно круче, чем локальная! Посему Carpe annum!
(Ответить) (Thread)


torrio
Link:(Link)
Time:2010-01-04 09:26 pm
А что сразу не eternity, не знаю как по-латыни будет - "aeternity" какое-нибудь:) Зачем мелочиться?
(Ответить) (Parent) (Thread)

serg14
Link:(Link)
Time:2010-01-04 09:44 pm
А почему в другую сторону не пойти? ;)

Имхо, важно найти компромисс между интервалом дискретизации и успешным исходом на каждом интервале так, чтобы достичь максимума интрегрального показателя. Причем верхний лимит интеграла случайная переменная :-(

Кстать, ребята на валлстрите тоже все выбирают carpe diem или ad infinitum :-)
(Ответить) (Parent) (Thread)


torrio
Link:(Link)
Time:2010-01-04 11:27 pm
Вид функции, интегральное значение которой мы пытаемся максимизировать, не совсем (вернее - совсем не) ясен. Так что нужно пробовать разные масштабы окна и сравнивать значения:)
(Ответить) (Parent) (Thread)

serg14
Link:(Link)
Time:2010-01-05 01:14 am
Да, нелегко это дело формализовать. Вообще, для начала, нужно четко сформулировать что есть Сarpe diem. Означает ли это скользящую "область видимости" в 24 часа или нужно каждый день ровно в полночь ожидать кирдыка.
(Ответить) (Parent) (Thread)


torrio
Link:(Link)
Time:2010-01-05 09:56 am
Я думаю, речь идет о циклических периодах бодрствования. Т.е. проснулся - прожил день так, чтобы не было мучительно больно - уснул с чувством выполненного. И так день за днём. Понятно, конечно, что Земля - это неИСО, но никто не идеален. Даже солнце.
(Ответить) (Parent) (Thread)

serg14
Link:(Link)
Time:2010-01-05 05:20 pm
Погоди! Ты уходишь от четких формулировок. Нужно определиться, думаем мы о завтрашнем дне или нет. Имеет ли смысл сегодня делать то, что может пригодиться не ранее, чем завтра? Или это время лучше потратить на что-нибудь другое, тем самым максимизируя "чувство выполненного" сегодня. Носки стирать? В школу ходить?

Про исо не понял!
(Ответить) (Parent) (Thread)


gamzov
Link:(Link)
Time:2010-01-11 12:12 pm
Предлагаю оптимизацию твоего алгоритма:
1. Использовать comma-separated string вместо XML, дабы сократить избыточность.
2. Поставить еще более быструю DDR3
3. Убрать из компьютера жесткий диск, ну чтобы точно в память файл помещался, а не свопился случайно.
(Ответить) (Thread)


torrio
Link:(Link)
Time:2010-01-11 12:48 pm
Жжошь по трем пунктам:)
(Ответить) (Parent) (Thread)

[icon] Всем бездельникам - Lorem Ipsum igitur, juvenes dum sumus
View:Свежие записи.
View:Архив.
View:Друзья.
View:Личная информация.
View:Website (Мой сайт).