Сегодня первый раз на практике моему приложению не хватило 32-битного целого! В фотокиоске во время загрузки фотографий со всяких флеш-карточек показывается прогресс-бар. Он рисуется из двух значений: количество загруженных байт и общего количество байт во всех файлах. И вот сегодня появился человек с забитой до отказа 4-гигабайтной флешкой. Соответственно цифра общего объема файлов была чуть больше 4 миллиардов. А в базе для прогресс-бара использовались 32-битные поля со знаком, то есть -- 2 миллиарда с копейками максимум. Вот и не хватило.
Так что, лично для меня сегодня рубеж "повседневности" 64 бит перейден, потому что флешка с фтографиями -- это уже самый натуральный mainstream, а не "редкие теоретические случаи".
Комментарии: 13
1.12.06 17:14
Так надо было без знака использовать :)
Тогда бы хватило.
1.12.06 17:14
Use bignums
1.12.06 17:25
Месье не сливал DVD?
1.12.06 17:53
Эдак скоро будем в BLOBах размеры файлов хранить ((=
1.12.06 18:30
хаха! знакомо, очень знакомо ))
гигабайтные файлы в цикле тоже писал, и тоже сталкивался. спасали математические степени (считались байты в килобайтах, а где нужна была точность - в байтах)
2.12.06 10:51
Это не тот случай из-за которого нужно переходить на 64-разрядные процессоры. А такой рубеж мной был преодален (не новыми камнями) еще года 3-4 назад, когда я интересовался обработкой цифрового видео и сопутствующими программными алгоритмами. На самом деле я даже избалован 32 разрядами :-), особенно это чувствуется когда нужно возвращаться к 16 или даже к 8.
2.12.06 11:11
задумчиво
Вообще, обычно в таких случаях применяют скаллинг. ;)
2.12.06 11:37
Можно сделать быстро заплатку и хранить значение - (-1) = "больше 2 Гб". А сколько именно - неважно.
2.12.06 12:09
Ничего себе "проще"! Ходи потом по коду, обрабатывай эти "if -1"... Проще как раз просто поле с int на bigint поменять.
4.12.06 16:38
Как это все жили раньше с винтами явно больше 4G ;)? Наверно потому что уже лет так 5 для
размеров данных используется long long int.
Или ;)
4.12.06 16:42
Виноват, парсер съел угловые кавычки - в последней
строке должно было быть:
Или <type 'long'> ;)
13.12.06 15:03
long int ?
8.06.07 20:34
Да, время 64-бит пришло. Только в ближайшее время ошибок станет еще больше!
Почему я так говорю? Я в этом заинтересован! :))))
"20 ловушек переноса Си++ - кода на 64-битную платформу"
http://www.viva64.com/articles/20_issues_of_porting_C++_code_on_the_64-bit_platform_(rus).html
"Проблемы тестирования 64-битных приложений"
http://www.viva64.com/articles/Problems_of_testing_64-bit_applications_(rus).html
Андрей Карпов,
Viva64.com Team