| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Простой алгоритм сравнения дат. |
| Автор: pish_r 24.4.2003, 15:11 |
| Идея следующая-даты записываем в символьную строку в формате: yyyymmdd Теперь же только стоит сравнить эти строки, какая строка больше, такая и дата больше. В С/С++ можно сравнить функцией strcmp или классами строк, например CString у них перегружены методы стравнения. |
| Автор: migo 7.6.2003, 20:37 |
| Ага, но сравнивать стринги дольше, чем число, да и переводить дату в стринг накладно. |
| Автор: neutrino 8.6.2003, 12:47 |
| Сравнить даты очень быстро можно, если держать их в записях на ассемблере. Для этого достаточно 32 бит. А потом простым CMP и JE/JNE. |
| Автор: pish_r 9.6.2003, 08:47 | ||
Ну я думаю, кончились те времена, когда нужно следить за временем выполнения. Да и "дольше"-понятие растяжимое. Я например, никакой тормознутости не наблюдаю, хотя происходит сравнение дат в немалой базе. Правда пишу на С/С++. |
| Автор: neutrino 9.6.2003, 13:11 |
| Какая разница на чем писать? Запусти свою прогу 1000000 раз, а потом второй вариант и посмотри какая разница. Конечно, если скорость не критична, то и алгоритм изобретать не надо. |
| Автор: Alex101 13.6.2003, 09:51 |
| На асме и стринги сравниваются одной командой, не думаю, что это будет намного дольше, чем 32-битные записи. |
| Автор: neutrino 18.6.2003, 12:35 |
| Э.. нет ... если ты имеешь в виду цепочечные команды, то они сравниваются не в пару тактов, а в зависимости от количества символов (CX) и условия (REPE/REPNE). Если ты запустишь дебугер, то увидишь, что твое сравнение строк делается несколько раз. Конечно это быстрее чем писать свой цикл, но тем не менее не так быстро как сравнение двух 32-битных операндов. |