Перейти к содержанию
    

Честно говоря, странные результаты. Даже древний ИАР 5 версии выдаёт 50 мипсов...

вообще-то все дело в функциях типа strcpy :)

у меня простые inline на C написаны, без особых хитростей, воткнул библиотечную strcpy, strcmp че-то не хочет, я ему __builtin_strcmp , а он мне undefined reference to `strcmp'

Microseconds for one run through Dhrystone: 9

Dhrystones per Second: 111111

VAX MIPS rating = 63.239

кароче тут мы тестим у кого лучше strcpy/strcmp реализованы :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AHTOXA, можете выложить откомпиленные бинарки dhry21a.о,dhry21b.о или как там у вас? уж больно интересно стало...

Вот держите, весь проект (с *.o): dhrystone.7z

Хех, секунды, сотые - вот тут мои микросекундные таймеры рулят в полную :laughing:

Это потому у вас такое ровное число:

Microseconds for one run through Dhrystone: 6.0

? Или случайно совпало? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это потому у вас такое ровное число:

? Или случайно совпало? :)

Хм, конечно случайно, там ведь время одного прохода вычисляется в плавучке.

Просто у меня точность измерения общего отрезка времени выполнения функции идёт до микросекунды :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда подправьте в тесте формат выдачи результата, чтоб было типа

Microseconds for one run through Dhrystone: 6.002

, так будет видно микросекундное разрешение:)

 

Вот держите, весь проект (с *.o): dhrystone.7z

Упс, накладочка вышла. Так не заработает. Чтоб заработало, надо в makefile исправить

USE_LTO = YES

на

USE_LTO = NO

. Это я пытался улучшить результат, но не заработало.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда подправьте в тесте формат выдачи результата, чтоб было типа

Microseconds for one run through Dhrystone: 6.002

, так будет видно микросекундное разрешение:)

Это уже будет нано- и пико- секундное разрешение :)

А если серьёзно, то ничего так не будет видно, после вычисления на основе double переменных дробные значения получатся хоть из целых секунд.

Чтобы увидеть разрешение таймера нужно распечатать полученное общее время теста, или разницу между Begin_time и End_time.

В моём случае Begin_Time всегда равно нулю, поэтому достаточно только End_Time, в микросекундах:

EndTime: 3035526
Microseconds for one run through Dhrystone: 6.0710520000 
Dhrystones per Second:                        164716.1 
VAX MIPS rating =     93.748

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если серьёзно, то ничего так не будет видно, после вычисления на основе double переменных дробные значения получатся хоть из целых секунд.

Я не о том:) Просто после того, как у меня получилось усечение секунд до целых (с изрядным улучшением результата теста), я с подозрением отнёсся к

Microseconds for one run through Dhrystone: 6.0.

Вот так - совсем другое дело:

Microseconds for one run through Dhrystone: 6.0710520000

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

проверил еще на IAR V6.20.3.22642

iccarm --thumb --cpu Cortex-M3 --aapcs std --aeabi -Ohs -r -e

Microseconds for one run through Dhrystone: 21 
Dhrystones per Second:                      47619 
VAX MIPS rating = 27.102

все функции мои, библиотечные не использовал.

для сравнения тот же код на gcc

arm-none-eabi-gcc -Werror -Wall -Wextra -pipe -mcpu=cortex-m3 -mthumb -O2 -fomit-frame-pointer -ffreestanding -fno-common -fwide-exec-charset=UTF-16LE -fshort-wchar -g

Microseconds for one run through Dhrystone: 19 
Dhrystones per Second:                      52631 
VAX MIPS rating = 29.955

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

все функции мои, библиотечные не использовал.

Все - это которые? Strcpy и Strcmp?

Ну а смысл? Ведь судя по результату - реализация очень слабая... :rolleyes:

 

ЗЫ: а printf тоже ваша собственная? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все - это которые? Strcpy и Strcmp?

Ну а смысл? Ведь судя по результату - реализация очень слабая...

смысл - gcc че-то в free-standing глючит с библиотечными.

а реализация нормальная, просто компиллер, когда копирует строковые константы иногда может хитрый код генерить. в данном случаи

strcpy (Ptr_Glob->variant.var_1.Str_Comp,"DHRYSTONE PROGRAM, SOME STRING");

он взрулил. в других случаях,где идет у меня работа с usb-дескрипторами он вообще хочет вызывать обычную strcpy, реализация которой ничем не лучше(и не хуже) моей.

 

ЗЫ: а printf тоже ваша собственная?

да, простой. не хотел запариватся обучать gcc-шный, как правильно работать под моей системой, с моими драйверами, куда собственно выводить итп, а если он еще кучи использует, так вообще пахать не будет, у меня нету куч,статика чисто.

проще свой написать, всего каких-то там 120 строчек кода

и инлайны memxxx и strxxx все вместе 70 строчек кода

 

попробую еще какой-нибудь ogg или jpeg запихнуть, посмотрим как оно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробую еще какой-нибудь ogg или jpeg запихнуть, посмотрим как оно

Только как бы это сделать попроще? Без файловой системы, для чистоты эксперимента? Там ведь объёмы в сотни килобайт\мегабайты :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только как бы это сделать попроще? Без файловой системы, для чистоты эксперимента? Там ведь объёмы в сотни килобайт\мегабайты :(

JPEG в качестве теста пробовал. На МК без внешней памяти исходную картинку кладем во флеш, результат в RAM. Сотен килобайт не нужно, достаточно пары десятков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

VAX MIPS rating = 29.955

Может у вас с частотой чего не того? Что-то совсем грустно получается:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

JPEG в качестве теста пробовал. На МК без внешней памяти исходную картинку кладем во флеш, результат в RAM. Сотен килобайт не нужно, достаточно пары десятков.

Ну а исходники можно попросить выложить? Если они не коммерческие, конечно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну а исходники можно попросить выложить? Если они не коммерческие, конечно?

Можно, они гнутые и не мои. Уже когда-то здесь проскакивали, я только по минимуму что-то причесывал на предмет производительности.

jpeg.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...