- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
void Processing( void )
{
while ( moreToDo )
{
CData* temp = new CData;
GetData( temp );
ProcessData( temp );
delete temp;
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+162
void Processing( void )
{
while ( moreToDo )
{
CData* temp = new CData;
GetData( temp );
ProcessData( temp );
delete temp;
}
}
absolut 20.06.2010 00:02 # −1
xaionaro 20.06.2010 00:07 # +1
Dummy00001 20.06.2010 01:18 # 0
без контекста - не говно.
xaionaro 20.06.2010 10:44 # 0
Я знаю, что в вашем плюсовом мире это считается нормальным, но лично мне это очень не нравится. Получается, что это вопрос стиля программирования.
pushkoff 20.06.2010 19:33 # +1
guest 20.06.2010 19:55 # 0
guest 20.06.2010 21:16 # 0
guest 20.06.2010 21:49 # 0
guest 20.06.2010 22:39 # 0
Webkill 21.06.2010 17:05 # 0
Говногость 21.06.2010 20:08 # −1
Наверное, это что-то пидарасистское?
guest 20.06.2010 22:40 # 0
blackhearted 21.06.2010 16:56 # 0
gpr 21.06.2010 22:21 # 0
Webkill 21.06.2010 23:19 # 0
pushkoff 21.06.2010 23:20 # +2
Webkill 21.06.2010 23:28 # −3
pushkoff 21.06.2010 23:48 # +1
Webkill 22.06.2010 03:36 # +1
Говногость 22.06.2010 05:57 # 0
Это проблема тулз, а не кода. Найди кошерные тулзы. Лишь из-за проверки говнокодить...
>оверхеда не много, если оно не в бесконечном цикле
В бесконечном цикле оверхед быть не может по определению. Сколько не тупи в одной итерации цикла и не оверхедь - вычисления не закончатся никогда. А вообще бесконечных циклов не бывает.
Webkill 22.06.2010 12:08 # 0
с позиции программы - бывают. цикл не закончился на момент завершения программы (юзер убил в таскбаре) - у цикла не было конца, он бесконечен.
Webkill 22.06.2010 12:10 # −1
pushkoff 22.06.2010 12:30 # −2
Webkill 22.06.2010 12:38 # 0
опять ты со своим девиантным пониманием слова "утечка".
A memory leak or leakage in computer science is a particular type of memory consumption by a computer program where the program is unable to release memory it has acquired. A memory leak has symptoms similar to a number of other problems (see below) and generally can only be diagnosed by a programmer with access to the program source code; however, many people refer to any unwanted increase in memory usage as a memory leak, though this is not strictly accurate.
Особенно последнюю часть зацени.
pushkoff 22.06.2010 14:00 # −2
каждую секунду расход памяти увеличивается на килобайт, через 6 часов работы программы, тот же функционал требует больших расходов памяти, но при выходе ликов нет... как называть это явление? я называю это утечками...
Webkill 22.06.2010 15:55 # 0
Если мы каждую секунду выделям килобайт, и сборщик мусора игнорирует этот ужас, значит, мы обладаем ссылкой на этой объект, и, значит, он нужен - значит, такова логика программы. Не путай логику программы с ошибками программирования.
Не говоря уже о том, что пример надуманный.
pushkoff 22.06.2010 16:10 # −2
Webkill 22.06.2010 16:25 # 0
Потому что то, что ты приводишь в пример - это и есть логика прогрмамы!
Иначе мне ясно, каким образом можно в языке со сборщиком мусора выделять память, которая не нужна, и при этом не возвращать её обратно в систему на протяжении 6 часов. Это невозможно.
Если же память всё-таки нужна, то такова логика программы, не утечка это. Утечка это баг, т.е. что-то, чего программист не хотел. А тут он этого хотел. Да и пример-то надуманный.
pushkoff 22.06.2010 16:33 # −2
я говорю, что это ошибки, ты говоришь, что это логика работы...
Webkill 22.06.2010 16:48 # 0
это ошибочная логика работы )
> попробуй поищи программы в которых не так...
все такие программы написаны скорей всего на с++. там-то утечек навалом.
pushkoff 22.06.2010 17:01 # −2
Webkill 22.06.2010 18:55 # 0
забивается не вся память, а только предвыделенный участок кучи. если ты не в курсе, то сишные и сиплюшные дефолтны аллокаторы тоже предвыделяют память у системы в приличных месштабах. так что технически разницы нет -и там и там висим с неиспользуемой памятью. вот только сишный аллокатор из-за дефрагментации будет выделять ещё и ещё сегментов (если софт работает скажем 100 суток), а сборщик мусора будет сжимать.
> посчитает каждый байт на паре своих 4 гектарных планок...
тут да, юзеры всегда смешат. покупают компьютер, чтобы проц простаивал и 99% ничего не делал, покупают оперативку, чтобы 90% было 90% времени свободно... компутер работает вхолостую...
pushkoff 22.06.2010 14:07 # −2
Webkill 22.06.2010 15:59 # 0
Webkill 22.06.2010 16:06 # 0
вообще во всех языках так делают - сначала пишут, а потом перед релизом проверяют слабые места и оптимизируют (писать сразу же оптимизируя считается моветоном). прямо уж судорожно? если сроки издатель зажимает, то это не вина явы)
pushkoff 22.06.2010 16:14 # −2
причем заметь, я не говорил про "оптимизировать", я говорил про явные ошибки и недочеты в архитектуре...
Webkill 22.06.2010 16:34 # +1
вообще-то я говорил, что сначала нужно писать программу не намеренно плохо, а "как пишется" - и уже когда есть рабочий прототип - только тогда начинать тестить на боттлнеки и их убирать. Это во всех умных книжках пишут, вообще-тто (что-тов роде "не оптимизируй раньше времени"). т.е. это совершенно нормально, что они ищут слабые места в уже почти готовом продукте и пытаются урезать потребление памяти. и непонятно, как это невинное занятие позволяет утверждать, что в яве есть утечки памяти. логика типа "если Маша хочет выглядеть лучше - значит, в настоящий момент она мымра мымрой" - логика настоящего с++ника.
> у них нет тулзов для их поиска, так как реклама гласит, что в яве нет утечек.
ребята про профайлеры не слышали?
pushkoff 22.06.2010 16:55 # −2
незнаю... не код же они пересматривают строку за строкой...
всегда завидовал и наверное буду завидовать и дальше тем, у кого есть время писать сначала плохо а потом хорошо... у нас в индустрии платят только за хорошо и сразу, со второй попытки написать хорошо может каждый имбицил...
Webkill 22.06.2010 16:57 # 0
pushkoff 22.06.2010 17:06 # −2
разработка движка на питоне от специалиста с многолетним стажем длилась дольше разработки игры на С++, при несравнимо разных показателях производительности и расхода памяти...
Webkill 22.06.2010 18:59 # 0
по времени разработки тут всё-таки сравниваются не языки/системы, а профессионализм разрабов. всё-таки, каким бы с++ не был говном, с++ник допустим с 5-летним стажем куда подкованнее питониста с тем же стажем.
pushkoff 22.06.2010 12:34 # −2
Webkill 22.06.2010 12:37 # 0
pushkoff 22.06.2010 13:55 # −2
pushkoff 22.06.2010 13:58 # −2
Webkill 22.06.2010 16:12 # 0
ну а допустим есть игорвое поле, и на нём может быть произвольное количество объектов с произвольным количеством отношений, свойств и т. п. ты это через стек или мемпул будешь делать? или делать спецификацию "максимум 4 стула на карте?" для казуалок-то/хелловорлдов-то пойдёт, но не для чего-то большого, серьёзного
pushkoff 22.06.2010 16:18 # −2
я говорю что в грамотной программе нет delete... есть места в которых оно удаляется... само... автоматически...
а есть места где явно вызывается Release...
и я тебе больше скажу... если ты уверен что на карте есть больше 4 стульев, это еще не значит что их не 4...
Webkill 22.06.2010 16:41 # 0
только вот
> я говорю что в грамотной программе нет delete... есть места в которых оно удаляется... само... автоматически...
есть взаимоисключащий параграф со многими твоими высказываниями в стиле "в сборщике мусора память удаляется автоматически, это говно и утечки"
pushkoff 22.06.2010 16:58 # −2
типа auto_ptr... эти оберткам пофиг кто на кого ссылается... у объекта есть время жизни, закончилось - досвиданья, все обращения к объекту после конца времени жизни - ошибки и их быть не должно...
Webkill 21.06.2010 23:30 # 0
pushkoff 21.06.2010 23:50 # 0
можно 1 раз выделить перед циклом буфер sizeof(CData) и через placement new создавать в этом буфере объект...
Webkill 22.06.2010 03:34 # 0
blackhearted 22.06.2010 11:42 # −3
Говногость 20.06.2010 00:23 # 0
guest 20.06.2010 00:28 # 0
guest 20.06.2010 00:31 # +3
так вот, это не говнокод, покуда нет контекста. конструктор может быть переопределён под пул... даже если исключения генерятся, то пул может определять потерянные участки.
привет.
guest 20.06.2010 00:32 # 0
guest 20.06.2010 10:55 # 0
guest 20.06.2010 13:02 # +1
Это Бэйсик. В других языках гораздо геморойнее."
ухаха
guest 20.06.2010 13:12 # +1
зы: Я не усрус. Нашёл совершенно случайно. Казалось бы, какова вероятность, что когда ищешь про tryParse гуглом и наткнёшься на макса про. Можно конечно подумать, что это кто-то другой, но я почему-то узнал его код сразу. Видел его здесь столько раз. :D
Ждём Усруса, что-бы удостоверл, что это действительно максим прохоров. :)
guest 20.06.2010 13:20 # 0
http://www.aspnetmania.com/Forums/ForumMessage/459468.html
guest 20.06.2010 13:23 # 0
guest 20.06.2010 13:25 # +2
но с другой стороны: ДенисПопов, Вебкил...
Быдлокодингу все возрасты покорны
guest 20.06.2010 22:41 # 0
guest 20.06.2010 23:20 # 0
http://lurkmore.ru/Денис_Попов
guest 21.06.2010 02:19 # 0
guest 20.06.2010 13:22 # +3
http://s49.radikal.ru/i124/0904/df/53506fd6f130.png
guest 20.06.2010 13:24 # +2
3.14159265 21.06.2010 16:33 # 0
это взорвало мой мозг, его даже говнодизайном не назовешь
Webkill 21.06.2010 16:38 # 0
то есть где-то ещё есть первая..
guest 20.06.2010 18:31 # +2
ursus 06.09.2010 14:23 # −1
Его треды доставляют на sql.ru
в данный момент ловим на живца http://sql.ru/forum/actualthread.aspx?tid=787435
guest 20.06.2010 13:09 # +2
С уважением,
Макс "
guest 20.06.2010 13:15 # 0
зы: Я специально не искал. Видел только одно его сообщение, то что приведено по моей ссылке.
guest 20.06.2010 13:18 # −1
guest 20.06.2010 13:21 # +2
3.14159265 21.06.2010 15:31 # +1