catpad: (Default)
[personal profile] catpad



Только что мне удалось улучшить быстродействие нашей главной программы почти в 250 раз. Я, честно говоря, думал, что получится убыстрить в 2-3 раза, но не в 250 же! Файл, который обрабатывался за 12 минут, теперь обрабатывается за 3 секунды. Проблемы всех прошлых недель, из-за которых тут ночевало 50 человек, теперь решены.
Достижение тут, конечно, не в смысле чего-то очень уж хитроумного - всего-то я потратил 3 часа на программирование и 0 на отладку (как-то оно само собой заработало) - но в смысле значимости этого дела.
Такая штука, однако, может сильно повлиять на один сильно запутанный бизнес-вопрос. HP, на сервере которого работает наша программа, хочет за очень большие деньги продать J-Phone новый сервер GS160 с 16 CPU. Они ссылаются на то, что программа не в состоянии обрабатывать увеличивающееся количество информации на старом сервере. И она, действительно, была не в состоянии.
А что же они скажут теперь, получив 250-кратное убыстрение ? Подгадил я им знатно, ничего не скажешь.

ого...

Date: 2003-08-06 10:08 pm (UTC)
From: [identity profile] rahal.livejournal.com
deep respect...
а поподробнее о программе можно?...

Re: ого...

Date: 2003-08-06 10:22 pm (UTC)
From: [identity profile] catpad.livejournal.com
Ну это billing system для телефонов. Ничего особенно интересного.

Re: ого...

Date: 2003-08-06 11:40 pm (UTC)
From: [identity profile] andjel.livejournal.com
Я свой биллинг когда переписал - он тоже стал рпаз в 10
быстрее ^__^

Date: 2003-08-06 10:37 pm (UTC)
From: [identity profile] kostia-inochkin.livejournal.com
Белая полоса наступила? Хоть бы была пошире ...

Date: 2003-08-06 10:58 pm (UTC)
From: [identity profile] catpad.livejournal.com
А, не, это я жень-шеня наелся. Устал сильно, решил несколько баночек выпить. Там как раз написано "for spiritually tired". Я вообще-то не верю в эти вещи, а тут и впрямь - сразу в Бэтмена превратился!

Date: 2003-08-06 11:49 pm (UTC)
From: [identity profile] scroll.livejournal.com
Поздравляю! Теперь ты не Кэтпэд - теперь ты Кэтмэн!:) Собственно, теперь стало понятно, за что тебя тут держат, даже когда у тебя нет работы...

Date: 2003-08-06 11:56 pm (UTC)
From: [identity profile] catpad.livejournal.com
Да, а главное, мне самому стало понятно :)
ext_454496: (Default)
From: [identity profile] alexcohn.livejournal.com
"никаких чудес и магии не существует. Попросим же маэстро [] разоблачить нам этот опыт" (http://lib.ru/BULGAKOW/master.txt#13)

Чего Вы посоветуете избегать тем из нас, у кого нет лишних денег на GS160? Может, там пользовались какой-то принятой в биллинге технологией, которая специально так жутко тормозит?
From: [identity profile] catpad.livejournal.com
Никакой магии и в самом деле нет. Как нет и никакой магической технологии.
Два фактора повлияли на торможение:
1) таблица не была загружена в память, а обращение всё время происходило к Ораклу;
2) поиск по таблице был просто дубовый - квадратный, то есть. Я посадил её в память и организовал в виде B-tree.
Всё просто, а существовавшее положение можно объяснить только полной бездарностью разработчиков.
ext_454496: (Default)
From: [identity profile] alexcohn.livejournal.com
Из Вашего объяснения следует, что черной магией следует считать -

а) частые SQL запросы, вместо того чтобы получить всю информацию за один раз, и потом обрабатывать

б) поиск "в лоб" внутри структурированного буфера

разоблачаем заведомо ложные представления о том

а) что уж Oracle-то сможет сделать эффекитивный кэш запросов

б) что сажатьстроить дерево дольше, чем выполнить несколько раз strstr() или какой нибудь InStr()..
From: [identity profile] catpad.livejournal.com
а) частые SQL запросы, вместо того чтобы получить всю информацию за один раз, и потом обрабатывать

По-моему, это очевидно. Oracle делает кучу всякой фигни, кроме простого ответа на вопросы - пошет в redo log, archive и чёрт знает, что ещё. Кроме того, механизмы связи с ним не очень (мне во всяком случае) понятны, но, насколько можно судить, там замешаны сокеты даже внутри одной машины (в файле tnsnames.ora определяется host и port, а ещё запускается некий listener. Тут я не специалист, однако).
Учтём ещё и следующую вещь: множество программ обращаются к тому же самому Oracle instance параллельно. Отсюда - зависание запросов (wait event), диск IO и так далее. Сервер у нас не параллельный.

б) поиск "в лоб" внутри структурированного буфера
разоблачаем заведомо ложные представления о том
а) что уж Oracle-то сможет сделать эффекитивный кэш запросов


Oracle, конечно, может сделать эффективный кэш (который shared pool), но - см. выше.

б) что сажатьстроить дерево дольше, чем выполнить несколько раз strstr() или какой нибудь InStr()..
Это я не понял. Дерево сажать дольше, но искать-то по нему не в пример быстрее. Кроме того, задача поиска тут довольно хитро поставлена. Я просто придумал для неё идеальную структуру данных - именно для такого поиска (не уверен, кстати, что она и в самом деле B-tree, просто, кажется, похожа на него. Я не помню, как это дерево в точности определяется, я эту структуру сам придумал).

спора не получится

Date: 2003-08-07 02:21 am (UTC)
ext_454496: (Default)
From: [identity profile] alexcohn.livejournal.com
потому что говорим мы одно и то же, ты просто не заметил фразы "заведомо ложные представления"...

Когда мне говорят: "нужно выполнить поиск один раз", я пишу процедуру поиска; если говорят "нужно выполнить немножко поисков", я пишу парсер буфера. Потому что "немножко" меньше 1024 не бывает.

Date: 2003-08-07 07:51 am (UTC)
From: [identity profile] barabek.livejournal.com
Ты побил мой рекорд - 97-раз.
Тем более, что я потратил на переписывание три дня.
Спасает меня лишь то, что никаких обращений к БД в процессе не было -
пришлось заново писать бизнес-логику.

Автор изначального кода лидирует в списке персон,
которым нужно оторвать яйца, опережая всю Ось Зла.
Я как то о нем писал, с примерами программ.
Помнишь, тот, который обращался к методу суперкласса через this. ?



Date: 2003-08-07 06:12 pm (UTC)
From: [identity profile] catpad.livejournal.com
Да, помню что-то такое.
Однако на Оси Зла тут в известной нам фирме такие писатели сидят, что твой автор, я думаю, просто жалкий эпигон.

Date: 2003-08-07 04:42 pm (UTC)
From: [identity profile] ex-ilyavinar899.livejournal.com
Да, а я гордился какими-то вонючими 38% (http://www.livejournal.com/users/ilyavinarsky/660108.html)...

Date: 2003-08-12 07:23 am (UTC)
From: [identity profile] fenechka.livejournal.com
А они хоть осознают твои подвиги?
Может, тебе договор продлят!?

Date: 2003-08-12 05:11 pm (UTC)
From: [identity profile] catpad.livejournal.com
Увы, как и следовало ожидать, подвиги мои они не осознают. Пока что они просто игнорируют мои письма. Потом посмотрим.
Впрочем, это здесь совершенно стандартная практика, и меня ничуть не удивляет.

маленький вопрос

Date: 2003-08-18 12:30 am (UTC)
From: [identity profile] 30x40.livejournal.com
>Ну это billing system для телефонов. Ничего особенно интересного

поддерживающаяся из Израиля (или мне так показалось?) - ето не продукт Амдокса случайно?

Re: маленький вопрос

Date: 2003-08-18 12:35 am (UTC)
From: [identity profile] catpad.livejournal.com
Он самый, продукт Амдокса.
Page generated Feb. 6th, 2026 12:02 pm
Powered by Dreamwidth Studios