amd64 архитектуре (linux) в плане перформанса? С одной стороны, регистры 64-битные, и поэтому подходит int64_t. А с другой, исторически для циклов использовался int, и под такой код наверняка адаптировали новые процессоры. По диапазонам подходят оба типа. Так какой лучше, если разница вообще есть?
Почему не unsigned?
вообще без разницы
Без разницы, лишь бы влезло в регистр
Делай ровно такой счётчик, сколько нужно действительно для цикла
хотя разница есть. у cmp rax, im опкод на один байт больше ,чем у cmp eax, im
[u]int_fast*_t?
зачем, если есть int
Меня смущает int свой неопределённостью в размере. Если есть какие-то оценки максимального значения счётчика – вероятно, лучше их выразить в коде
В общем, лучше меньшего размера брать, а там компилятор сам разберётся?
Кстати, да, забыл. Спс
если есть опасение что не влезет, то нужно этим озаботиться конечно, например статик ассерт вставить
Может, стоит воспользоваться профилировщиком для начала?
Да, компилятор разберётся. Если будешь использовать байт, то он всё равно заюзает 32-ух битный счётчик и EAX
Советую, вот эту пдфку почитать, если тема интересна https://software.intel.com/content/www/us/en/develop/download/intel-64-and-ia-32-architectures-optimization-reference-manual.html
Говорят бывает такое, что гарантии правильного переполнения счётчика могут стоить довольно много, а зачем они нужны для цикла — непонятно
Обсуждают сегодня