?

Log in

мимоходом (программистское) - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

мимоходом (программистское) [июн. 6, 2009|09:10 pm]
Anatoly Vorobey
Три строчки кода -> работа выполняется в три раза быстре -> вместо тысячи процессов ее будут делать триста.

(мемоизация вызова тяжелой функции)

Правда, я все равно ненавижу компьютеры. И C++.
СсылкаОтветить

Comments:
[User Picture]From: dmarck
2009-06-06 06:28 pm
Ого. Супер результат, кстати.
(Ответить) (Thread)
From: arcbishop
2009-06-06 07:06 pm
Три гвоздя -> башмаки прослужат в три раза дольше -> вместо трех недель развалятся через три месяца.

Правда, я все равно ненавижу сапоги. И обувное ремесло.
(Ответить) (Thread)
[User Picture]From: alta_voce
2009-06-06 07:15 pm
Правда, я все равно ненавижу компьютеры. И C++.

О, наконец мы сходимся во мнениях.
(Ответить) (Thread)
[User Picture]From: clevernewt
2009-06-06 07:20 pm
А уж как вас начальство наверное ненавидит.
Вы же им втрое поводы сократили для втирания очков их начальству.
(Ответить) (Thread)
[User Picture]From: lelia_br
2009-06-06 07:35 pm
а кокой язык любите?
(Ответить) (Thread)
[User Picture]From: ygam
2009-06-06 08:18 pm
Я вчера и позавчера переписал одну компоненту так, что она выполняется в разы быстрее, и при исполнении требует вдвое меньше памяти.
(Ответить) (Thread)
From: (Anonymous)
2009-06-06 08:48 pm
OOM killer уже выехал
(Ответить) (Parent) (Thread)
From: (Anonymous)
2009-06-06 08:50 pm
теперь логично будет заменить процессы на потоки, и кэш сделать общим
(Ответить) (Thread)
[User Picture]From: dimrub
2009-06-06 09:08 pm
Я плюсы раньше тоже не любил. Потом оказалось, что я их просто толком не знал. Теперь не то, чтобы очень люблю, но уважаю.
(Ответить) (Thread)
[User Picture]From: sobaker
2009-06-06 11:20 pm
Но лучше бы это уважение уже увековечить, зафиксировав C++ в камне и поставив вооруженный караул с наказом "не подпускайте к нему детей".

Страшный же язык-то, если вдуматься. Это как дети собирают динозавров из кусочков - и вот оно и с зубами, и мох ест, и летает, и колпак клоунский, и табличка - "..но система темплейтов позволит взглянуть на это по-другому!"
(Ответить) (Parent) (Thread)
From: huzhepidarasa
2009-06-07 03:27 am
угу, только заменить нечем
(Ответить) (Parent) (Thread)
[User Picture]From: dimrub
2009-06-07 09:28 am
Вот именно.
(Ответить) (Parent) (Thread)
[User Picture]From: cmm
2009-06-07 09:34 am
спорно, вообще-то.
(Ответить) (Parent) (Thread)
[User Picture]From: dimrub
2009-06-07 09:37 am
Ну как-то нет у него альтернатив. Только C.
(Ответить) (Parent) (Thread)
[User Picture]From: cmm
2009-06-07 10:34 am
вот именно. :)
(Ответить) (Parent) (Thread)
[User Picture]From: dimrub
2009-06-07 10:36 am
Мне, все же, кажется, что писать много кода на C утомительно. Но я осознаю и существование альтернативной точки зрения :).
(Ответить) (Parent) (Thread)
[User Picture]From: cmm
2009-06-07 11:30 am
> писать много кода на C утомительно.

единственный известный мне эффективный способ прекратить дискуссию, уже ставшую или грозящую стать нудной (из ненасильственных, по крайней мере) — это перестать делать спорные и/или непонятные утверждения.

процитированное утверждение, к примеру, мне непонятно.  утомительно вообще или в сравнении с тем же количеством кода на C++?  или, может быть, подразумевается что C менее экспрессивен, чем C++ (в теории верно, "а так — нэт").  неясно также, какой именно аспект программирования ты находишь утомительным: я, например, чрезвычайно утомляюсь выбирать один из нескольких сравнимых по уродству но при этом взаимно несовместимых способов реализовать тривиальный кусок функциональности, а также обсуждать эти способы с коллегами, особенно когда коллеги почему-то имеют эстетические предпочтения.  ещё меня очень утомляет ментальная линеаризация control flow при необходимости разобраться в чьём-то невъебенно объектно-ориентированном коде.  ну и так далее. :)
(Ответить) (Parent) (Thread)
[User Picture]From: dimrub
2009-06-07 11:39 am
Ну, лично я немало работал с различными проектами как на плюсах, так и на C, и любой проект на С нетривиальной величины рано или поздно начинал придумывать себя как проект на плюсах, только получалось это у него плохо (обожаю таблицы указателей на функции, инициализированные хрен знает где и вызываемые через макросы). Мне кажется, что при некоторой не чрезмерной образованности и слаженности в коллективе, можно создавать большие и сложные проекты на плюсах, которые потом можно в течении длительного времени поддерживать и развивать, и что те же действия на С хоть и возможны, но требуют куда больших затрат, но, повторяю, это мое личное мнение - YMM (and probably does) V.
(Ответить) (Parent) (Thread)
[User Picture]From: cmm
2009-06-07 11:44 am
Мне кажется, что при некоторой не чрезмерной образованности и слаженности в коллективе, можно создавать большие и сложные проекты на плюсах, которые потом можно в течении длительного времени поддерживать и развивать, и что те же действия на С хоть и возможны, но требуют куда больших затрат

мой опыт с этим не согласуется, увы.
(Ответить) (Parent) (Thread)
From: lazyreader
2009-06-08 11:24 am
(записываю в книжечку)

любой проект на С нетривиальной величины рано или поздно начинал придумывать себя как проект на плюсах, только получалось это у него плохо

(Ответить) (Parent) (Thread)
From: (Anonymous)
2009-06-08 12:25 am
objective-c
(Ответить) (Parent) (Thread)
From: (Anonymous)
2009-06-06 09:45 pm
переписал qacct. Оригинал удивительно неудобен

merrick Kennebunk
(Ответить) (Thread)
[User Picture]From: vodianoj
2009-06-06 10:29 pm

Парадокс

Можно не любить С++, зато нельзя не любить Страуструпа.
(Ответить) (Thread)
[User Picture]From: avva
2009-06-06 10:35 pm

Re: Парадокс

Можно, можно.
(Ответить) (Parent) (Thread)
From: ext_72902
2009-06-07 08:38 am

Re: Парадокс

Причём любить часто и извращённо.
(Ответить) (Parent) (Thread)
[User Picture]From: bujik
2009-06-07 05:43 am
Правда, я все равно ненавижу компьютеры. И C++.

Правда? Так бросьте первое и второе куда подальше. В чем проблема то?
(Ответить) (Thread)
From: mudak
2009-06-07 11:01 am
Придётся заняться чем-то другим, а всё остальное ещё хуже.
(Ответить) (Parent) (Thread)
[User Picture]From: gaus
2009-06-07 06:15 am
Technology sukz
(Ответить) (Thread)
[User Picture]From: greps
2009-06-07 12:00 pm

?

А продемонстрируйте код пожалуйста. Что то я термин "мемоизация тяжелой функции" подрастерял...
(Ответить) (Thread)
[User Picture]From: avva
2009-06-07 12:41 pm

Re: ?

ну что-то типа (немножко упрощенно)

result = foo.Bar(arg)

превращается в

iter_type cached = cache_.find(arg);
if (cached != cache_.end()) {
return cached->second;
} else {
result = foo.Bar(arg);
cache_.insert(make_pair(arg, result));
return result;
}

(Ответить) (Parent) (Thread)
[User Picture]From: greps
2009-06-07 12:55 pm

Re: ?

Ну это ведь не всегда работает, а только в тех условиях когда функция конечнозначная... или как бы ... ну ... "хит-фактор высокий"...
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2009-06-07 12:58 pm

Re: ?

Конечно не всегда.
http://en.wikipedia.org/wiki/Memoization
(Ответить) (Parent) (Thread)
[User Picture]From: breqwas
2009-06-07 02:54 pm

Re: ?

А в этом умном термине есть смысл, выходящий за рамки привычного "кэшировать результат" (ну, юз-кейсы memcached'а)?
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2009-06-07 03:10 pm

Re: ?

кэшировать результат - гораздо более широкое понятие, включающее действительно например и юз-кейсы memcached. memoization обычно подразумевает локальное кэширование внутри процесса вызова одной функции, у которой нет side effects. Для чего нужно отдельное слово? напр. потому, что в некоторых языках и средах мемоизацию можно делать автоматически, для всех или для частых или для тяжелых вызовов. И это может дать огромную отдачу практически "бесплатно".
(Ответить) (Parent) (Thread)