![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
vladko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
Эта функция оформленная в виде длл считывает текстовый файл производит вычисления и выодит новый текстовый файл. Можно ли этот код оптимизировать по скорости? Например 150 мб считает минуту. Сократить бы это время в 2-3 раза...
|
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
vladko
ты хоть приведи код в порядок..а то читать это невозможно..коментарии добавь хоть какие-то, табуляцию не игнорируй. Добавлено через 3 минуты и 26 секунд vladko и этот код работает?
где free???
ты освободил два байта, обращаешся к большему количеству...или я чего-то не пойму? |
||||
|
|||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
жесть какая-то
этот код не оптимизировать нада, а удалить и написать новый |
|||
|
||||
vladko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
Блин, че так все плохо? На мелких файлах нормально работает... Код не я писал...
|
|||
|
||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Вот это
![]()
|
||||
|
|||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
товарищ vladko уже эту тему подымал.
http://forum.vingrad.ru/forum/topic-253997...y1831844/0.html vladko, не лучше ли вам пойти в Центр Помощи? |
|||
|
||||
vladko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
ага, только там не помогли... вот я и выложил результат помощи с другого форума...
|
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
||||
|
||||
vladko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
да, помогли, а не флудили... прога рабочая...
спасибо за исправления xvr!!! |
|||
|
||||
0xDX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.2.2009 Репутация: нет Всего: нет |
Читать файл нужно побольше буфером.
Выделять память нужно залпом, и не когда не использовать malloc(new ) в цикле. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
vladko
Если она работает - то это видимо счастливая случаность ![]() 1. Читай из файла большими кусками - например по мегабайту за итерацию. 2. Не выделяй память в цикле и не обявляй переменных. 3. Не забывай освобождать память если она больше не нужна. Попробуй все таки привести код в порядок.. |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
azesmcar, при завершении программы память освобождается сама, так что там ничего освобождать не надо
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
GoldFinch
на каждый вызов malloc и new должен быть free и delete соответственно до завершения программы. И не важно что операционная система подотрет за вами то что не сделали вы сами. |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
vladko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
azesmcar, а как читать блоками если файл разбит на строки (и они разной длины)?
p.s. что зим, проще поржать, чем что-то посоветовать? Это сообщение отредактировал(а) vladko - 14.4.2009, 12:32 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
vladko
Скажи подробнее какой формат файла? Он у тебя вроде не текстовый. Что там запиасно и в какой очередности. Если я не ошибаюсь это long, long, double, int? сделай структуру с этими типами и читай через fread сразу в структуру, можно читать не по одному а блоками - по 20 структур к примеру, попытно пишешь в выходной файл. |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
а почему они должны быть вы объяснить можете? или тупо заучили правило и теперь его повторяете? |
|||
|
||||
vladko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
azesmcar, файл как раз текстовый, пример:
20090318 010017;1.4045;7 20090318 010150;1.405;1 20090318 010150;1.405;1 20090318 010151;1.405;1 20090318 010307;1.4049;1 20090318 010308;1.4044;1 20090318 010308;1.4041;1 20090318 010802;1.4049;1 20090318 011056;1.4046;1 20090318 011406;1.4047;1 20090318 011416;1.4047;1 20090318 011903;1.4049;2 20090318 011903;1.405;2 20090318 011912;1.4054;1 20090318 011912;1.4054;2 20090318 011912;1.4054;1 20090318 011926;1.4053;1 20090318 012141;1.4057;5 20090318 012159;1.4056;1 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
GoldFinch
Если есть правило - оно обосновано! Очень интересует - создайте топик поговорим об этом. Тут другой вопрос обсуждается: Кратко для delte - чтобы вызывался деструктор для malloc - ос не обязана за вас это делать, нет стандарта ос который ее к этому обязывает, сегодня это виндоуз - завтра не дай и бог АбабОС - гарантий нет + это может быть только один модуль программы и по завершению функции - не факт что программа заканчивается. Добавлено через 3 минуты и 14 секунд GoldFinch это вам в голову не приходило или просто тупо думаете что виндоуз единственная операционная система и все программы состоят из одной единственной функции? Добавлено через 6 минут и 5 секунд vladko значит файл текстовый. Просто берем и читаем конкретный размер - к примеру 1мегабайт данных из файла в буфер выделенный malloc (выделяем один раз). Потом читаем из файла в этот буфер один мегабайт данных, смотрим сколько на самом деле прочитали (запоминаем). Обрабатываем данные в цикле, если нашли строку которая прочиталась наполовину, запоминаем ее начало - читаем продолжение из файла. Пока все данные не прочтем (т.е. сколько прочли - меньше чем сколько попросили прочесть) Примерно так Это сообщение отредактировал(а) azesmcar - 14.4.2009, 12:54 |
|||
|
||||
vladko |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 31.3.2009 Репутация: нет Всего: нет |
azesmcar, да, спасибо, я понял что делать, а вот как... может быть в личке обсудим вариант взаимовыгодного сотрудничества?
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
vladko
напиши в аську минут через 10. Номер аськи в профайле |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Файл лучше даже не читать (пусть одним куском), а целиком замэпить в память (см. CreateFile/CreateFileMapping/MapViewOfFile), не забудьте затерминэйтить его нулем после мэпа. Для чтения данных из файла лучше применить не sscanf(fscanf) а прямой разбор через stroul/strtod (может быть быстрее)
|
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
GoldFinch
затем что завтра - если программа станет делать что-то еще, разработчик забудет про malloc в функции proc1. Или это может быть другой разработчик который даже не знает что в функции proc1 есть malloc без free и разработчик надеялся на систему, в задаче нигде не указано что разработка идет под операционную систему виндоуз, это С++, и раздел называется С++ а не программирование под виндоуз, код надо писать так чтобы при портировании делалось минимум изменений (если можно вообще не делалось), т.е. писать в соответствии со стандартами. Я после института не писал ни одной программы которая бы отработала один раз и завершилась, в работе такие программы встречаются редко и освобождение памяти должно войти в привычку. |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
GoldFinch
хотите длл под линукс покажу ![]() ладно, проехали...не хотите освобождать память - не надо. Это сообщение отредактировал(а) azesmcar - 14.4.2009, 14:30 |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
azesmcar, судя по предыдущим постам длл пишется для использования в VBA, VBA под линукс покажете?
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
GoldFinch
предыдущий пост - это в другом топике? не смотрел. Какая разница какая операционка? я вам полно других примеров привел. Это вопрос из темы "не надо передавать std::string по константной ссылке, все равно в линуксе он 4 байта занимает". |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
GoldFinch, я Вас правильно понял, Вы утверждаете, что если пишите короткую прогу и знаете что под Виндоус, то предпочтительней или даже необходимо не возвращать выделенную память ?!
Это сообщение отредактировал(а) mes - 14.4.2009, 16:26 |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
GoldFinch,
вы строите из себя панка от программирования? у вас, должен заметить, это получается правда в нехорошем смысле слова "панк" ![]() |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
почитал словарь Collins. У панка одни положительные значения за исключением двух: 1) obsolete a young male homosexual; catamite 2) obsolete a prostitute J0ker, вы какое имели ввиду? ![]() |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
zim22, Punk - падонок(в современном мире так называют людей, которые пытаются выделится среди других своим идиотизмом)
|
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
http://www.urbandictionary.com/define.php?term=punk http://www.merriam-webster.com/dictionary/punk a usually petty gangster, hoodlum, or ruffian Это сообщение отредактировал(а) J0ker - 14.4.2009, 17:13 |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
улыбнуло.
|
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
mes,
предпочтительней или даже необходимо не писать код который производит ненужные действия, (особенно не приносящие пользы, увеличивающие время написания программы, увеличивающие объем бинарника программы, снижающие быстродействие программы) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в принципе согласен..но способ достижения я выбрал бы другой, В грубом изложении я согласен отказаться от delete (речь веду о С++ ), но не в пользу брошенного без присмотра объекта, а в передачи прав на его удаление умному указателю. В общем всегда стараюсь придерживаться правила: функция не знает o том, в каком контексте она работает. Вы же, насколько я смог представить по Вашим постам, стараетесь нагрузить свою память лишними деталями. В частности применительно к последним высказываниям, заставляете себя постоянно помнить в какой из функций хватает, а в какой не поставили освобождение памяти. Хотя гораздо легче просто писать симметрично. ![]() Это сообщение отредактировал(а) mes - 14.4.2009, 18:21 |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Предпочтительней и даже необходимо писать код который будет читабельным и понятным. Преждевременная оптимизация - зло! Программу можно оптимизировать сменив алгоритм, перейдя с С++ на С, в крайнем случае можно еще поизвращатся если нужно очень быстро - и это основные методы оптимизации. А не освобождать память это не то что преждевременная оптимизация, это почти доходит до маразма. Насколько вы повысите произодительность программы убрав delete или free? Просто посчитайте и вы поймете что оно того не стоит. Добавлено через 2 минуты и 16 секунд А насчет лишних действий - любая вызванная вами функция в той или иной степени выполняет что либо что возможно на первый взгляд вам и не нужно. Если хотите чтобы код делала только то что вы от него требуете и ничего более - единственный выход писать на ассемблере. |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
а что этот код должен делать?
|
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
не прикидывайтесь неджедаем ![]() |
|||
|
||||
sdukshis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 23.3.2009 Репутация: нет Всего: 1 |
Если я правильно понял программу, то в ней важно, чтобы данные переписались в новый файл уже в отсортированном виде. Для этого Вы организуете считывание в map, который являясь упорядоченным деревом производит сортировку.
Или возможно Вам нужно исключить или обработать повторяющиеся данные В первом случае лучше считывать данные в структуру типа vector (с заранее выделенной памятью) или list(хотя если можно заранее оценить размер данных, то лучше vector), а сортировку производить стандартными алгоритмами. Во втором случае все тоже самое, только обрабатывать дубликаты опять с помощью стандартных функций. Вообще очень советую разбить программу на подпрограммы и произвести профилирование кода. Там сразу выплывет, какая часть кода занимает основное время. |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
зачем память заранее выделять? вектор умный - сам выделит и зарезервирует в придачу. если под сортировкой вы подразумеваете алгоритм sort из <algorithm>, то list в пролёте. у него BiDirrectional Iterators, а не RandomAccess. Хотя у list и есть встроенная функция-член sort, но мне кажется она работает медленнее, чем sort из <algorithm> Это сообщение отредактировал(а) zim22 - 15.4.2009, 07:05 |
|||
|
||||
vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
если не выделить самостоятельно будут overheads
у них одинаковая сложность |
||||
|
|||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
||||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
ну а почему мы обычно используем quik sort вместо merge sort? ![]() |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
Lazin, я тебя не понял, у алгоритма есть заявленная сложность. С чего бы ей увеличиваться?
|
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
О оценка, это еще не все, что можно сказать о сложности алгоритма
к примеру, quick sort имеет сложность O(N*log N) в большинстве случаев, а в худшем случае O(N*N), а у bucket sort сложность - O(N), но константа перед этим N и большее использование памяти приводят к тому, что он работает медленнее чем обычный quick sort в большинстве случаев ![]() |
|||
|
||||
sdukshis |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 23.3.2009 Репутация: нет Всего: 1 |
Проблему выбора между vector и list я вижу в следующем: Оба эти контейнера умеют динамически увеличиваться в размере, но делают это по разному. размер Vector растет как степень двойки, но при этом ему нужно осуществлять копирование элементов в новый участок памяти. Поэтому если можно как-то оценить (я не говорю о точном кол-ве) размер входных данных, то можно pапросить выделение памяти всего 1 раз. контейнер list запрашивает новую память при добавлении каждого элемента. Отсюда и моё предложение, что лучше использовать vector если можно представить размер входных данных(например размер файла/среднюю длину строки). Кроме того сортировка для vector может быть выполнена быстрее чем для list (может алгоритмическая сложность у них и одинакова, но просто попробуйте замерить на достаточно большом объёме данных, разница должна хорошо просматриваться). Поиск повторений для обоих контейнеров примерно одинаковый, так что я за использование vector |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
zim22, vinter, вы перед тем как пользоваться умным математическим понятием порядка сложности, O[f(N)] узнали бы что это означает. Конечно труъ программистам математика наверное не нужна, но бездумно пользоваться терминами тоже не хорошо.
какбэ фраза "сложность алгоритма имеет порядок O[g(N)]" означает что для функции сложности f(N) существует такая окрестность точки n при которой при N->n отношение f(x)/g(x) ограничено в других определениях можно найти варианты "предел f(x)/g(x) при N->n существует и не равен нулю" или "... при N стремящемся к бесконечности ..." так вот это значит что 10*N = O[100*N] а также значит что может существовать m, такое что при N<m O[N*N]<O[N], что вобщем-то очевидно, если представить график параболы y=x*x и прямой y=x для x<1 Это сообщение отредактировал(а) GoldFinch - 15.4.2009, 18:26 |
|||
|
||||
vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
отлично, но у нас нет никаких констант. Есть четкая верхняя граница.
интересный экскурс, только причем он тут? O() это верхняя граница числа операций, которые могут быть пороизведены в данном алгоритме. И не надо никаких констант дописывать, туда, где их нет. |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
lol
|
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
http://en.wikipedia.org/wiki/Big_O_notation
|
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
а O(1) это наверное 1 операция? на самом деле, это k операций, при этом k не зависит от N zim22, "on the growth rate", вы понимаете разницу между самой функцией и ее производными? скорость возрастания, это функция полученная из функции сложности, и в выражении O[g(N)] - g(N) это ее верхняя асимптотическая граница Это сообщение отредактировал(а) GoldFinch - 15.4.2009, 19:38 |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
GoldFinch, OMG ты читай, что тебе пишут, а не то что ты хочешь читать. Я тебе еще раз повтаряю сложность это ВЕРХНЯЯ ГРАНИЦА.
где разночтение с моими словами или zim22? |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
vinter, верхняя граница чего?
если алгоритм содержит 100*N операций, то его сложность O(N), а если он содержит 10*N операций, то его сложность тоже O(N) и если алгоритм содержит 100000+N операций, его сложность тоже O(N), потому что предел отношения (100000+N)/N при N стремящемся к бесконечности конечен и не равен нулю, тоже самое и с пределом (10*N)/(100*N) Это сообщение отредактировал(а) GoldFinch - 15.4.2009, 19:56 |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
GoldFinch, дык, константа не зависит от N, естественно. Но в конкретном прмере не было никаких констант. Была конкретная сложность. Прямым текстом:
Вот, все. После чего ты начал приплетать, какие то левые константы, которые вообще не имеют отношения к конкретной сложности... |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
vinter, изначально разговор был о том, что у разных алгоритмов при одинаковой сложности O[g(N)] может быть разное время выполнения
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
GoldFinch, твоя правда.
|
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
сложность алгоритма сортировки показвает изенение времени выполнения при изменении n
прямого отношения к сравнению алгоритмов между собой это не имеет |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
понятие сложнсти было придумано,как раз для сравнения алгоритмов. Так, что имеет. |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
я сазал прямого отношения big O между алгоритмами можно сравнивать исключительно после обсуждения сложности итерации и понятие сложности было придумано в первую очередь для указания отношния времени выполнения к n Это сообщение отредактировал(а) J0ker - 16.4.2009, 16:29 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |