Модератор: Модераторы
devels писал(а):Операционка Win XP 32.
Хеш функция у меня самая простая и максимально быстрая, быстрее сделать нереально:
По-моему в FPC тоже простая функция.
Шурик Сетевой писал(а):devels писал(а):Операционка Win XP 32.
Хеш функция у меня самая простая и максимально быстрая, быстрее сделать нереально:
По-моему в FPC тоже простая функция.
У вас используется умножение в цикле, это дорого. Функция FPHash из Contnrs, скорее всего, окажется существенно быстрее - у них там только сдвиги и вычитания.
Куда рыть в смысле оптимизации хеш-функций, я точно не скажу, не помню, где видел сравнение быстродействия и коллизионной устойчивости, но вроде бы сойдет PJW-32 (есть в Википедии), там всего одно деление (в конце вычисления), а в цикле только сдвиги и сложение. Насколько я помню, ее коллизионная стойкость примерно 1 коллизия на 30000 ключей
Сквозняк писал(а):Зравствуй goto и while, причём while велосипед
Кнут очень спорный авторитет. Вирта больше интересовал учебный аспект паскаля, ему несложно было для отказа от гото несколько новых языков придумать. Теперь приходится придумывать, чем же они "лучше" "древнего" паскаля.Ну goto даже мэтры просят не использовать (Страуструп, Вирт, Кнут)
Случайно не Вольво натолкнул на такую мысль?Лично я всегда обхожусь одним while (без ГОТО), если это не так это ОДНОЗНАЧНО ошибка в подходе решения задачи.
При программировании на низком уровне, есть множество задач в которых известно начало и конец диапазона вычисления - то чем занимается for. Также, важно знать текущую позицию вычисления и может понадобиться выйти раньше чем диапазон закончится. Если всё это делать внутри while, то это будет эмуляция for, а для goto это естественно, поэтому оно не велосипед.«причём while велосипед» Почему это?
Ну да, с вещественными числами сплошная лажа, последний знак после запятой может округлиться или неточно сосчитаться - целочисленные числа наше всё. Знаки < и > лучше ещё и тем, что использовать их намного спокойнее, они подстрахуют при ошибках вычисления. Пусть фаны математики переживают за дроби, им без них сложно думать.«Цикл for в таких языках, которые используют проверку переменной цикла на равенство (=), при незначительных сбоях могут перешагнуть и начать считать не правильно. По этому желательно использовать сравнения типа: <, >, >=, <=, <>, которые защитят вас от подобных недоразумений».
В спектрумбейсике такое было и в борландпаскале.Я выше вроде отписывал, что в языках Си и С++ мне нравится именно цикл for, с возможностью задания шага приращения.
Это легко решается при использовании goto и при этом не надо значительно переписывать цикл рискуя налепить ошибок, которые потом придётся долго отлавливать.Такое в языках Паскаль, можно сделать лишь при добавлении в цикл еще одной проверки If (вот это чистой воды Велосипед). Но зато эта задача решается легко в цикле while.
Как удобно в тестовой программе отрубить большой кусок кода при помощи goto, это что-то Никакого траха с тоннами // и { }. Используя goto можно писать программы методом раскрутки прототипа без постоянных переписываний, да даже в исхолдниках fpc оно есть. А как сделать переход из цикла в нужное место да так чтобы было хорошо видно куда производится переход?1. Гото нужно потихоньку забывать, (если программируете на ассемблере это чистой воды jmp, но там и идеология другая, там без этого никуда). Если же перед гото стоит IF это условные переходы на асме (JB, JBE). Но там это норма, в высоких языках - ЗЛО.
Можно, но неудобно и постоянно придётся ломать подвал чтобы прилепить балкон. Это задача для программ кодогенераторов. Ты просто не пользовался этим оператором, взял готовое чужое мнение и не проверил, только ли правду ли пишут в книжках.2. Можно вообще программировать без цикла For, использовать только while, по этому почему: «while велосипед» я не понял.
Сквозняк писал(а):Ты просто не пользовался этим оператором, взял готовое чужое мнение и не проверил, только ли правду ли пишут в книжках.
Как удобно в тестовой программе отрубить большой кусок кода при помощи goto, это что-то Никакого траха с тоннами // и { }. Используя goto можно писать программы методом раскрутки прототипа без постоянных переписываний, да даже в исхолдниках fpc оно есть. А как сделать переход из цикла в нужное место да так чтобы было хорошо видно куда производится переход?
текст программы пишут для человеков а не для компьютеров.
И пофиг на синтаксис, главное, чтобы красиво было!
debi12345 писал(а):Ага Смотрел С++ код Blender-а - сказка !
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6