ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
10 июля
329345 Топик полностью
MegaJohn (18.05.2012 11:39, просмотров: 142) ответил fk0 на Случаев крайнего идиотизма не надо. Да и аж 0.1% к разряду батареи. Неоптимальные алгоритмы в других местах дадут все 90%. Бороться не за что. Тем более что попал мимо -- GCC на уровне -O1 выоптимизирует этот strlen нафиг:
Лень профессиональный асм изучать. Вот такой пропусти-ка. И сообщи результат в циклах. Для AVR+IAR-speed optimize у меня получилось. v1 = 285200 циклов ! v2 = 2813, v3 = 1403  __root static char buff[200]; strcpy_P( buff, "Handset (or MicroTelephone) is the combined hand-held unit\ of microphone (transmitting capsule) and earpiece headphone (receiving capsule)\ particularly suitable for use in connection with of a standard" ); u8 n, r = 0; // v1 (fk0 (c) ) for( n = 0; n < strlen( buff ); n++ ) if( buff[n] & 1 ) r++; PORTD = r; // v2 r = 0; char* p = buff; for( n = strlen( buff ); n; n-- ) if( *p++ & 1 ) r++; PORTD = r; // v3 r = 0; p = buff; while( *p ) if( *p++ & 1 ) r++; PORTD = r;