тестирование toolchain |
Здравствуйте, гость ( Вход | Регистрация )
тестирование toolchain |
igor_bogomolov |
17.9.2011, 21:45
Сообщение
#1
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Кто нибудь знает какие-нибудь разумные фреймворки для тестирования тулчейнов?
Задача у меня следующая. Я собираю различные тулчейны для одной и той же arm архитектуры (отличаются версиями gcc и опциями конфигурирования пакетов). Мне нужно знать какой из них лучше с точки зрения производительности. Интересует скорость работы с памятью, скорость работы математических библиотек, в особенности с точкой (т.к. процессор без fpu), скорость работы с текстом, с потоками и т.д. У кого есть опыт в этом деле? |
|
|
igor_bogomolov |
20.9.2011, 23:37
Сообщение
#2
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Нашел несколько небольших примеров: libc-bench, strbench (это из того что хоть как то понравилось). Хочу собрать их в одно целое, привести вывод к общему виду, добавить недостающие части. Одна из недостающих частей - это тесты libm. Нацарапал быстренько такой тест, хочется услышать от других на сколько он адекватный?
Раскрывающийся текст
|
|
|
Iron Bug |
22.9.2011, 20:39
Сообщение
#3
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
у тебя функция print_stats немногопоточная. будет бардак при выводе на экран.
|
|
|
BRE |
22.9.2011, 20:43
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
igor_bogomolov |
22.9.2011, 21:23
Сообщение
#5
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
у тебя функция print_stats немногопоточная. будет бардак при выводе на экран. В этом варианте родительский процесс дожидается завершения порожденного процесса, только после этого продолжает свое выполнение.Но на самом деле вы правы. Я от этого варианта уже отказался, убрал fork и вывод информации из /proc/self/smaps. В приведенном выше варианте есть немного другой неприятный эффект. Если запускать приложение из консоли просто так, мы видим нормальный вывод. А вот если перенаправить поток в файл, начинается полная ерунда. Все что я вывел в поток ввода/вывода из родительского процесса, дублируется в дочернем. P.S. Трудно на самом деле объяснить суть, попробуйте просто скомпилировать этот пример и поэкспериментировать немного. |
|
|
Iron Bug |
22.9.2011, 23:14
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Почему? Там все линейно. fork копирует ПРОЦЕСС. а процесс тут один и он не завершается при выходе из процедуры. он завершается при завершении main. и поэтому будет много-много раз выведено всё из main и вообще полный бардак. по идее, чтобы это работало так, как задумано, нужно порождать отдельные процессы для run_bench и run_benchf. Сообщение отредактировал Iron Bug - 22.9.2011, 23:19 |
|
|
BRE |
22.9.2011, 23:19
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
igor_bogomolov |
22.9.2011, 23:29
Сообщение
#8
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
BRE, в чем именно заблуждение? Все происходит именно так, как написала Iron Bug.
|
|
|
Iron Bug |
22.9.2011, 23:35
Сообщение
#9
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Ты заблуждаешься. Почитай про fork. fork() creates a child process that differs from the parent process only in its PID and PPID. классика жанра, однако. я это ещё на первом курсе универа читала процесс в данном случае - один. ВСЯ его память, включая сегменты кода и данных и стек, копируется. с чего ради я ошибаюсь? именно так и будет: выходов из main будет столько, сколько вызовов fork плюс один. например, потестируем: Раскрывающийся текст
а теперь догадайтесь, думая логически, сколько надписей "exit!" будет на экране? копируется ВСЁ. включая циклы. Сообщение отредактировал Iron Bug - 22.9.2011, 23:36 |
|
|
BRE |
22.9.2011, 23:38
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
BRE, в чем именно заблуждение? Все происходит именно так, как написала Iron Bug. Давайте смотреть код.
В каждый момент времени существует либо parent-процесс, либо parent-процесс и ОДИН child-процесс! Сообщение отредактировал BRE - 22.9.2011, 23:43 |
|
|
Текстовая версия | Сейчас: 18.1.2025, 22:35 |