?

Log in

No account? Create an account

Previous Entry | Next Entry

"Более высокие понятия"

  • 20th Mar, 2015 at 12:53 AM
rabotka2
Я в 1075 раз убыстрила обработку обновления бондов на предмет глобального риска в аналитической одной проге для банка.

Заодно снизила потребление оперативной памяти с 2 гигабайт до 200 мб в аналитических прогнозах по сценариям риска (а таких процессов там много, примерно 12 тысяч)

Не буду объяснять принципы оптимизации - во-первных это большинству Людей с большой буквы "л" неинтересно, а во-вторых я там типа подписала соглашение что не буду разглашать, хотя там разглашать особо нечего, "надо просто чтоб все правильно было".

Причем, добилась этого "без использования профайлера", что имеет значение. Там профайлер невозможно использовать: он сразу вызывает таймауты, сразу все падает, прибегают инфраструктурные боссы с глазами навыкате, начинают орать.

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

Я как раз не хочу, чтобы у миня была популярность, вызванная именно в этой области, - ибо оптимизация это конечно хорошо, но я щетаю сибя главным образом классным дизайнером программ, где рассматриваюцца несколько более высокие понятия.

Что такое "более высокие понятия"? Ну трудно объяснить. Ну например, "начнем с простого": *гарантированная* *правильность* работы программы, при любых условиях. Это важнее, чем все остальное, разумеецца. И достичь этого не так просто как многие думают. "Там надо знать секреты".

Ну или. "Адаптируемость". Насколько этот код приспособлен для понимания Человеком. Если не очень, то его просто через какое-то время выбросят и напишут новый, потому что Людям некогда сидеть и разбирацца. Это проигрыш программы. Программа должна "конвертировать" Людей в свою веру, иначе они все это перепишут в, не к ночи будет упомянуто, в дот-нете или "еще чего хуже" типа visual basic for applications, или в питоне как это щяс популярно, или в каком-нибудь я не знаю PowerBuilder или в чем-то таком ужасном.

Четыре, я повторяю *четыре* языка есть: ассембелр (для тех кто железки пишет), си, си++ и джава, все остальное это ужос. Лучше всех кстати джава, если учесть все примочки которые к ней написали, ну и с++ для тех, кто квантами занимаюцца. Хотя квантовщики как правило тупые, мне всегда приходицца какие-то неимоверные хитрости придумывать, чтобы обойти все те многочисленные "островки отсутствия здравого смысла", которые они так любят насаждать в своих библиотеках, но это отдельный разговор почему это происходит.

А так - джава, сайнд интеджер, буфера примитивов, прямая аллокация, файлы с рандомным доступом, компер-энд-своп, спин, реентрантные замки, блокирующие кью, атомические объекты, все это очень жизнеутверждающе, я щетаю.


Comments

( 18 comments — Leave a comment )
coola wrote:
20th Mar, 2015 03:33 (UTC)
Саша, как ты можешь сочетать в себе творческого человека и программиста? Ведь это противоречит всем законам природы :)))
nasha_sasha wrote:
20th Mar, 2015 19:42 (UTC)
Во мне много несовместимого сочетаецца - я после твоих слов об этом задумалась и "нашла множество примеров". Наверное я какая-то не такая )
krysochka wrote:
20th Mar, 2015 03:36 (UTC)
Ничччего не поняла, кроме того, что ты, ангел, умничка :)
cdada wrote:
20th Mar, 2015 06:11 (UTC)
Rust - самый лучший язык! Надежнее джавы и столь же быстрый как с++.
Только сложный, я пока его не смогла выучить.
nasha_sasha wrote:
20th Mar, 2015 19:41 (UTC)
Я прочитала про руст в википедии, похоже что классный язык, но еще пока "молодой", там надо лет 15 чтобы все обросло приложениями. Пока за знание языка не начнут платить £700 в день в инвестбанках, основные массы в него не хлынут. Вот в scala уже вроде хлынули.
cdada wrote:
21st Mar, 2015 05:45 (UTC)
Scala меня спасла от голода :). Один из немногих языков, на котором у меня получается хорошо писать.
Сейчас акселерация - технологии взрослеют все быстрее. Скоро и в инвестбанках что-нибудь новое увидим.
loly_girl wrote:
20th Mar, 2015 06:48 (UTC)
Питон мне нравится нулевым временем вхождения. Захотела изменить скрипт — полезла и изменила, и всё работает. А в другие языки даже лезть страшно.
click0 wrote:
20th Mar, 2015 13:56 (UTC)
Я вам могу привести несколько примеров систем, написанных на Python. Там так просто влезть в функцию и изменить пару букв не получится, приходится исследовать-трассировать всю цепочку.

P.S. есть еще sh и awk :)

Edited at 2015-03-20 13:57 (UTC)
nasha_sasha wrote:
20th Mar, 2015 19:32 (UTC)
Я "ш" кстати люблю, хороший скрипт
click0 wrote:
20th Mar, 2015 19:49 (UTC)
Я тоже, предпочитаю обходится без "башизмов" при написании малой автоматизации труда сисадмина.
cdada wrote:
21st Mar, 2015 05:55 (UTC)
Привыкнув к sh и awk тяжело на windows переходить. PowerShell на трезвую голову трудно учится :).
click0 wrote:
21st Mar, 2015 13:50 (UTC)
Для Windows есть еще Cygwin и SUA.
nasha_sasha wrote:
20th Mar, 2015 19:31 (UTC)
Я не спец по питону, но наши жаловались что там многозадачность нельзя или как-то трудно. А вот аналитики, которые "кроме цифр ничего не любят", они как раз питон любят и на нем пишут всякие математические функции, типа умножить на полтора и разделить на минус семь дробь минус пятнадцать в квадрате, лично миня такие вещи бесят :)
cdada wrote:
21st Mar, 2015 05:51 (UTC)
У меня масса знакомых, переходящих с R на питон.
Но мне питон не понравился. Код получается какой-то разреженный, с большим количеством переменных. Протые вещи уже на экран не помещаются, а в памяти я их удержать не могу. Когда я анализ данных учила, мне на R проще было.
nikname wrote:
20th Mar, 2015 15:59 (UTC)
Подожду холивара между любителями С++ и Джавы.
nasha_sasha wrote:
20th Mar, 2015 19:27 (UTC)
Да чего, щяс уже можно direct memory allocation в джаве, осталось токо препроцессор добавить и перегрузку оператора, и будет це++. Может, в Джаве 10 уже разрешат.
katja_i wrote:
22nd Mar, 2015 01:37 (UTC)
Что ж за профайлер такой, что вызывает таймауты :) Правильный профайлер данные по UDP отсылает и оверхед там никакой, даже на лайве.
katja_i wrote:
22nd Mar, 2015 01:40 (UTC)
И да, без профайлера приходится сидеть и гадать глазами, в больших проектах впечатляюще бессмысленное занятие, особенно непосредственно после новых релизов, когда "стало медленнее" и замедляющие моменты надо вычислить и пофиксить за 5-10 минут.
( 18 comments — Leave a comment )