-
- вариантов оптимизации много, но следует учитывать и ситуацию, когда n == 0 =AlexD=(113 знак., 16.09.2013 11:50 - 17.09.2013 06:26)
- Учитывать можно по-разному: assert(n != 0). - SciFi(16.09.2013 13:11)
- Согласен. Случай n = 0 тоже нужно учитывать. - Bill(16.09.2013 13:06)
- не очень понимаю, что там Mazur чистит, но у него x меняется до x + n не всегда от нуля - в том примере от 3-х. - Vit(16.09.2013 11:53)
- Согласен. - Bill(16.09.2013 13:04)
- К примеру: Mazur(351 знак., 16.09.2013 12:05 - 12:10)
- стандартные функции форматирования вывода тебя спасут. Nikolay801_(137 знак., 16.09.2013 12:19 - 12:25)
- Так там и сама функция clr_string не нужна :о) Ибо есть библиотечная. Мазур учится. Скрипач(111 знак., 16.09.2013 11:37)
- Тогда уж лучше так: Bill(80 знак., 16.09.2013 13:17)
- Язык Си он такой :) Скрипач(44 знак., 16.09.2013 13:36)
- Ну да, это самая короткая запись. Только, я думаю, Bill(49 знак., 16.09.2013 13:39)
- Тут другое. Не факт что код будет лучше чем for(u08 i; - Скрипач(16.09.2013 13:43)
- А чем хуже? Сгенерированный код длиннее будет? Так это, по-моему, дело второе. По крайней мере в данном случае. - Bill(16.09.2013 13:49)
- Оптимизация в компиляторах - не эвристика. Стандартный случай имеет больше шансов получить дополнительную машинно-зависимую оптимизацию. - Скрипач(16.09.2013 13:51)
- Все правильно. Тогда стандартный случай будет выглядеть так: Bill(105 знак., 16.09.2013 14:28)
- Цикл от 0 до n с обращением к элементу массива по индексу более стандартен. - Скрипач(16.09.2013 15:08)
- А с этого момента поподробнее. - Bill(16.09.2013 17:36)
- Ничего конкретного, просто общие рассуждения. Скрипач(718 знак., 16.09.2013 19:50 - 19:54)
- А с этого момента поподробнее. - Bill(16.09.2013 17:36)
- Нет. Лучшим случаем для нормального компилятора (а не проф. уровня) будет таки memset, который выоптимизируется в команду а-ля LDIR на Z80, префикс повторения на PIC24 или x86 и т.п. - fk0(16.09.2013 14:37)
- Кстати сказать, блочные команды Z80 довольно медлены, самописные аналоги зачастую быстрее, так что оптимизация она такая штука занятная... - blackprapor(16.09.2013 20:17)
- Что конкретно быстрее? Тысяча LDI, LDI, LDI... вместо одного LDIR? Или push hl, push hl, push hl? Да без стека тяжко. Ещё вариант: LD HL,#xx, LD (#yy),HL. По скорости уже не то, по размеру ещё хуже чем LDI. - fk0(16.09.2013 22:44)
- Да, через стек делалось BlackPrapor(712 знак., 17.09.2013 09:09)
- Что конкретно быстрее? Тысяча LDI, LDI, LDI... вместо одного LDIR? Или push hl, push hl, push hl? Да без стека тяжко. Ещё вариант: LD HL,#xx, LD (#yy),HL. По скорости уже не то, по размеру ещё хуже чем LDI. - fk0(16.09.2013 22:44)
- memset - библиотечная функция. Это-во первых. Во-вторых, команды типа ldir довольно специфичны, мне не встречались Bill(116 знак., 16.09.2013 14:47)
- Компилятор может заменять вызов библиотечной функции на inline код. GCC это делает -- факт. Какие там у конкретного CPU команды дело десятое. Просто у многих CPU уровнем по-выше чем пик-контроллеры проф. уровня есть (префикс) команды повторения и fk0(850 знак., 16.09.2013 15:08)
- Так и я о том же. Библиотечная функция должна быть лучше самодельного цикла. Поэтому я в расчет ее не беру. А что касается развертывания цикла, то с этим Bill(169 знак., 16.09.2013 16:19)
- JIT-компиляция! - fk0(16.09.2013 17:25)
- Так и я о том же. Библиотечная функция должна быть лучше самодельного цикла. Поэтому я в расчет ее не беру. А что касается развертывания цикла, то с этим Bill(169 знак., 16.09.2013 16:19)
- 1) не имеет значения. 2) не имеет значения. 3) не имеет значения. - SciFi(16.09.2013 14:57)
- И почему? - Bill(16.09.2013 15:02)
- Ну это как голодающие дети Африки: кто-то скажет, что они имеют огромное значение, но сначала хочется своих детей накормить :-) - SciFi(16.09.2013 17:28)
- Компилятор для того и придуман. Чтобы это не имело значения. - Скрипач(16.09.2013 15:06)
- нут так, опять же. Компиляторы разные бывают. И потом, библиотечные функции далеко не всегда Bill(162 знак., 16.09.2013 15:14)
- И почему? - Bill(16.09.2013 15:02)
- Компилятор может заменять вызов библиотечной функции на inline код. GCC это делает -- факт. Какие там у конкретного CPU команды дело десятое. Просто у многих CPU уровнем по-выше чем пик-контроллеры проф. уровня есть (префикс) команды повторения и fk0(850 знак., 16.09.2013 15:08)
- Кстати сказать, блочные команды Z80 довольно медлены, самописные аналоги зачастую быстрее, так что оптимизация она такая штука занятная... - blackprapor(16.09.2013 20:17)
- Цикл от 0 до n с обращением к элементу массива по индексу более стандартен. - Скрипач(16.09.2013 15:08)
- Все правильно. Тогда стандартный случай будет выглядеть так: Bill(105 знак., 16.09.2013 14:28)
- Оптимизация в компиляторах - не эвристика. Стандартный случай имеет больше шансов получить дополнительную машинно-зависимую оптимизацию. - Скрипач(16.09.2013 13:51)
- Гы-гы, я вижу, тут многие "в поиске лучшего кода" :-) SciFi(28 знак., 16.09.2013 13:45)
- Конечно. Мне расслабляющий массаж, пожалуйста :о) - Скрипач(16.09.2013 13:49)
- Расслабляющий удар, вы хотели сказать? - blackprapor(16.09.2013 21:27)
- Спасибо, воздержусь :) - Скрипач(16.09.2013 21:48)
- Расслабляющий удар, вы хотели сказать? - blackprapor(16.09.2013 21:27)
- Развлекаемся просто, детство вспомнилось ;-) - =AlexD=(16.09.2013 13:48)
- Конечно. Мне расслабляющий массаж, пожалуйста :о) - Скрипач(16.09.2013 13:49)
- А чем хуже? Сгенерированный код длиннее будет? Так это, по-моему, дело второе. По крайней мере в данном случае. - Bill(16.09.2013 13:49)
- Тут другое. Не факт что код будет лучше чем for(u08 i; - Скрипач(16.09.2013 13:43)
- Ну да, это самая короткая запись. Только, я думаю, Bill(49 знак., 16.09.2013 13:39)
- Язык Си он такой :) Скрипач(44 знак., 16.09.2013 13:36)
- Тогда уж лучше так: Bill(80 знак., 16.09.2013 13:17)
- вариантов оптимизации много, но следует учитывать и ситуацию, когда n == 0 =AlexD=(113 знак., 16.09.2013 11:50 - 17.09.2013 06:26)