Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Разное > Ваши программы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.01.2023, 15:25
Аватар для eDmk
eDmk eDmk вне форума
Прохожий
 
Регистрация: 14.08.2021
Сообщения: 6
Версия Delphi: Delphi XE6
Репутация: 10
Стрелка MT64 - Многопоточный тест памяти и процессора

Всем привет!

Программа написана в рамках изучения параллельных процессов и их работы в асинхронном режиме.
В состав включены 12 тестов памяти и 12 задач применяемых в разработке игр.
Для каждого пункта вычисляется эффект прироста относительно одного потока.
Каждая функция максимально оптимизирована и может служить эталоном производительности.

Скачать тест (Яндекс.Диск)

Интерфейс программы:
MT64_Interface_01.png

Сравнение 2-х систем (Один процессор с разным кол-вом потоков (2 и 8) в тестах памяти):
MT64_compare_02.png

1. При запуске программа определяет и выставляет в настройках нужное кол-во потоков (обычно 1 поток на канал данных).
Тестировать память на максимуме потоков (8, 16, 24 и т.д.) нет смысла. Эффективность ограничивается количеством линий данных (2, 4, 6, 8).
2. На некоторых процессорах (XEON, THREADRIPPER, EPYC) для теста памяти может потребоваться больше потоков. Задать нужное кол-во можно в настройках.
Например, 13700KF показывает максимальную скорость памяти на 8 потоках, хотя кол-во каналов данных всего 2.
3. Результат тестирования или сравнения можно сохранить в PNG-файл (длительность полного теста ~25 минут).
4. Можно создать свой файл сравнения (папка Data\*.dat), исправив таблицу (редактируется по двойному щелчку).
Для корректного расчета размер укажите в единицах из столбца «Единицы».
Введите описание. После сохранения Ваш «максимум» будет доступен в списке окна отчета.
5. Галочка «Выделить все» включает/выключает тесты на двух страницах (Память/Вычисления).
6. Галочка «Ускорение» показывает коэффициент производительности многопоточной системы по отношению к однопоточной.
7. Каждый тест можно запускать по отдельности (двойной щелчок по строке включает/выключает тест).
8. Незначительные отличия в результатах зависят от фоновой загрузки ОС и тактовой частоты.
9. Индексы отражают производительность тестируемой системы.

Если вы протестировали, то прошу поделиться файлом результата (.rif). Обычно он сохраняется в папку MT64/Results.
Если Вашего процессора нет в результатах, то он будет включен как образец для сравнения.
Качественные отзывы/комментарии/предложения приветствую.

Последний раз редактировалось eDmk, 29.01.2023 в 22:01.
Ответить с цитированием
  #2  
Старый 29.01.2023, 15:57
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 45
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Нормально, что при запуске возникает ошибка?

Access violation ar address 712342 in module 'MT64.exe'. Read of Address FFFFFFFFFFFFFFFF.

Также во время теста при всех стандартных настройках выходит ошибка.

Access violation ar address 71DD75 in module 'MT64.exe'. Read of Address 0000000000000000.

При нажатии кнопки "Текущий тест" выходит ошибка и невозможно посмотреть результаты теста.

Access violation ar address 8С9498 in module 'MT64.exe'. Read of Address 000000000000001C.

При попытке загрузить результаты теста выходит ошибка.

Access violation ar address 8С9498 in module 'MT64.exe'. Read of Address 000000000000001C.

Последний раз редактировалось Vladimr, 29.01.2023 в 16:22.
Ответить с цитированием
  #3  
Старый 29.01.2023, 16:34
Аватар для eDmk
eDmk eDmk вне форума
Прохожий
 
Регистрация: 14.08.2021
Сообщения: 6
Версия Delphi: Delphi XE6
Репутация: 10
По умолчанию

Сложно сказать почему у Вас так. У меня нигде ничего не выскакивает.
Тестировал на Windows 10 22H2 на 2-х разных компьютерах.

>Нормально, что при запуске возникает ошибка?
Сотрите INI-файл и запустите заново.

>Также во время теста при всех стандартных настройках выходит ошибка.
Как же вы его запустили? После Access violation программа останавливается.

Очень похоже на вирусы или некорректно работающее оборудование.
Ответить с цитированием
  #4  
Старый 29.01.2023, 16:51
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 45
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Тоже Windows 22H2 (ver 10.0.19045.2546).

ini файл пробовал удалять, таже ошибка.

Сам не знаю как после Access violation программа запускается и что-то тестирует.

При запуске из под rdp другого пользователя все нормально.

Пробовал запустить на ноутбуке (Hp Pavilion G6) с процессором amd a10, выдает туже ошибку при запуске: Access violation ar address 712342 in module 'MT64.exe'. Read of Address FFFFFFFFFFFFFFFF.
Вложения
Тип файла: zip 110.zip (8.0 Кбайт, 1 просмотров)

Последний раз редактировалось Vladimr, 29.01.2023 в 20:22.
Ответить с цитированием
  #5  
Старый 29.01.2023, 19:04
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,534
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

А что за компонент используется для графиков?


Плюс, протестируйте запуск на двух мониторах - нужно изменить стиль форм, иначе пол формы на одном мониторе, а вторая половина на другом
Вложения
Тип файла: zip 111.zip (2.6 Кбайт, 2 просмотров)
Ответить с цитированием
  #6  
Старый 29.01.2023, 20:32
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 45
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Также хотелось бы сравнивать результаты не только с четырьмя образцами (которые есть в папке Data), а с другими результатами (результаты которых сохраняются в папку Results).

Также на вкладке "Сравнение ЦПУ" невозможно выбрать ни один из процессоров.

Можно сделать две версии программы: х86 и х64. Для возможности запуска на старых ОС.

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

Еще хотелось бы узнать какие минимальные требования для запуска. Например запуститься ли в Windows 7 и ниже. Есть ли поддержка х86 или только х64?
Ответить с цитированием
  #7  
Старый 29.01.2023, 20:34
Аватар для eDmk
eDmk eDmk вне форума
Прохожий
 
Регистрация: 14.08.2021
Сообщения: 6
Версия Delphi: Delphi XE6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Admin
А что за компонент используется для графиков?
Это мой старый компонент. Все рисуется в памяти (через CreateDIBSection), а потом BitBlt на форму.

Цитата:
Сообщение от Admin
Плюс, протестируйте запуск на двух мониторах - нужно изменить стиль форм, иначе пол формы на одном мониторе, а вторая половина на другом
Спасибо! Постараюсь исправить по возможности.
Нужен переходник VGA на DP, чтобы второй монитор подключить.

Спасибо за тест! Приложил Ваш тест в коллекцию результатов.
По ссылке в первом посте новый архив с Вашим результатом.
Ответить с цитированием
  #8  
Старый 29.01.2023, 20:58
Аватар для eDmk
eDmk eDmk вне форума
Прохожий
 
Регистрация: 14.08.2021
Сообщения: 6
Версия Delphi: Delphi XE6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimr
Также хотелось бы сравнивать результаты не только с четырьмя образцами (которые есть в папке Data), а с другими результатами (результаты которых сохраняются в папку Results).
Второй день по форумам собираю результаты. Накопил только 1 шт. Спасибо Admin. Накоплю - выложу больше вариантов.

Цитата:
Сообщение от Vladimr
Также на вкладке "Сравнение ЦПУ" невозможно выбрать ни один из процессоров.
Сложно понять, что происходит. У меня все пути прописаны относительно корня папки с EXE. Возможно из-за изменения слэша в пути с обратного на прямой все эти глюки и происходят. Хотя в Win 10 прямой слэш или обратный не имеет значения. У меня стоит проверка на изменение директории. Программа просто выругалась бы, что папки нет. Поэтому слэш тут ни при чем. (Ставлю на заметку - проверить).

Цитата:
Сообщение от Vladimr
Можно сделать две версии программы: х86 и х64. Для возможности запуска на старых ОС.
Переписывать под 32 бита нет времени. Все библиотеки 64 бита.

Цитата:
Сообщение от Vladimr
Также есть предложение сделать сайт, что бы все результаты отправлялись на него. А то можно будет сравнивать только с результатами которые сделал сам на разных компьютерах, а с другими людьми, вряд-ли получиться сравнивать.
База результатов будет расти быстро и ей заниматься нужно. Пока не планировал заниматься этим. Интересно 1 ГБ хостинга достаточно для пары тысяч результатов?

Цитата:
Сообщение от Vladimr
Еще хотелось бы узнать какие минимальные требования для запуска. Например запуститься ли в Windows 7 и ниже. Есть ли поддержка х86 или только х64?
В настройках компилятора стоит минимальная версия ОС 6.0 (Вроде это Windows Vista). С Windows 11 поддержка 32-х битов полностью прекращается, как в свое время прошла эпоха 16 бит под DOS.

Последний раз редактировалось eDmk, 29.01.2023 в 21:01.
Ответить с цитированием
  #9  
Старый 29.01.2023, 21:27
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 45
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от eDmk
. Интересно 1 ГБ хостинга достаточно для пары тысяч результатов?

Если считать, что результат занимает 8 Кб и хостинг 1 Гб (1 048 576 Кб), то теоретически должно хватить под 131072 результата.


Цитата:
Сообщение от eDmk
.Также на вкладке "Сравнение ЦПУ" невозможно выбрать ни один из процессоров.
Выбран самый короткий путь, пробелов нет и все равно не видит другие процессоры.

Хотелось бы чтобы результаты умещались на весь экран (стоит разрешение 1920 на 1080 без масштаба), а не приходилось чуть-чуть прокручивать вниз для того что бы увидеть все результаты.

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

Также отправляю свои результаты тестирования.
Изображения
Тип файла: png Нет выбора процессоров.png (274.9 Кбайт, 1 просмотров)
Вложения
Тип файла: zip 110.zip (2.6 Кбайт, 2 просмотров)

Последний раз редактировалось Vladimr, 29.01.2023 в 21:30.
Ответить с цитированием
  #10  
Старый 29.01.2023, 22:16
Аватар для eDmk
eDmk eDmk вне форума
Прохожий
 
Регистрация: 14.08.2021
Сообщения: 6
Версия Delphi: Delphi XE6
Репутация: 10
По умолчанию

Цитата:
теоретически должно хватить под 131072 результата.
Буду думать как устроить вариант с WEB-ом.

Цитата:
Выбран самый короткий путь, пробелов нет и все равно не видит другие процессоры.
Сложно понять, что происходит. Не могу ответить сразу. Это БЕТА-версия. Пока в процессе отладки. Все еще может измениться.

Цитата:
Хотелось бы чтобы результаты умещались на весь экран (стоит разрешение 1920 на 1080 без масштаба), а не приходилось чуть-чуть прокручивать вниз для того что бы увидеть все результаты.
Можно прокрутить окно колесиком мыши. С шифтом крутится по горизонтали. Уменьшить отчет пока не могу. Слишком мелко получается. Но в будущем возможно сделаю изменяемую высоту строки и шрифт. Сейчас стоит 20 пикселов и шрифт Segoe UI.

Цитата:
Можно еще запретить запускать больше одного экземпляра программы, что бы нельзя было одновременно два теста запустить и исказить результат.
Сделаем.

Цитата:
Также отправляю свои результаты тестирования.
Спасибо! Результат включен в дистрибутив. В первом посте обновлена ссылка.

PS. Разница в производительности 12700 vs 13700 всего 10-11% по одному ядру и 20-30% по многопоточности. Видимо +4 ядра добавляют жару
Собственно для чего тест и был написан. По импортным тестам разница в производительности доходила до +70%, а по факту прирост небольшой.
Ох уж эти маркетологи!

Последний раз редактировалось eDmk, 29.01.2023 в 22:23.
Ответить с цитированием
  #11  
Старый 29.01.2023, 22:55
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 45
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Попробовал запустить в VirtualBox v7 (OS Vista).

Запускается нормально. Процессоры для сравнения появились все которые возможны. А вот максимум можно выбрать только из четырех вариантов которые были первоначально.

Предлагаю запретить возможность запускать в виртуальных машинах, потому что программа не может определить модуль памяти и при нажатии кнопки "Старт" возникает исключение "External exception C000001D".

Также когда выбираешь сколько памяти использовать приложению, то память выделяется сразу и перестает использоваться только при закрытии приложения. А хотелось бы что бы программа начала использовать память, только при выполнении тестов и освобождала ее по завершению тестов.
Ответить с цитированием
  #12  
Старый 29.01.2023, 23:55
Аватар для eDmk
eDmk eDmk вне форума
Прохожий
 
Регистрация: 14.08.2021
Сообщения: 6
Версия Delphi: Delphi XE6
Репутация: 10
По умолчанию

Цитата:
А вот максимум можно выбрать только из четырех вариантов которые были первоначально.
Максимумы - это просто образцы для сравнения. Их можно сохранять из любого результата.
1. Загружаете результат.
2. Идете в настройки. Там появится Ваш результат. Редактируем максимумы по двойному щелчку или ставим автомаксимум (для ленивых) - это увеличение производительности примерно в 2 раза. Сохраняем файл (там иконка сохранить есть). Ваш максимум появится в списке сразу после закрытия настроек. Можете организовать свой максимум сравнения и назвать его «ПК мечты» И сравнивать все по нему. Можете в максимумы добавлять текущие результаты без изменений. Список будет расти.

Цитата:
Предлагаю запретить возможность запускать в виртуальных машинах
Еще не тестировал. Посмотрим что там происходит. Нужно время.

Цитата:
External exception C000001D
Есть такой косяк. Программа читает кол-во каналов памяти из БИОСа.

Цитата:
А хотелось бы что бы программа начала использовать память, только при выполнении тестов и освобождала ее по завершению тестов.
Со временем исправлю. Не все сразу.

Последний раз редактировалось eDmk, 30.01.2023 в 00:10.
Ответить с цитированием
  #13  
Старый 30.01.2023, 00:22
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 45
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Также не хватает вкладки "О программе" на которой будет указанна текущая версия программы и контакты для связи с разработчиком.

Если web интерфейс делать слишком сложно, то можно не делать а сделать немного другой вариант.
При завершении теста выскакивает окошко о том что вы согласны отправить свой результат разработчику и при согласии, результат теста отправляется сразу к вам. И не надо будет искать и вспоминать где скачал программу и кому отправить результат.

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

Ещё предлагаю результаты тестов на вашем сайте хранить не по одному файлу на тест. Если результатов тестирования будет, скажем за 1000-2000, то кому захочется ждать когда скачается 2000 файлов по 8 КБ, и хранить столько файлов у себя или к примеру один файл на 16Мб с результатами 2000 тестов. А уже сама программа будет считывать результаты из одного большого файла и выводить результаты.

Также есть небольшой недостаток в именовании тестов. Например сейчас они именуются также как и файлы в папке.

Также можно добавить отдельную вкладку, на которой будет таблица лидеров тестов, от наилучшего к худшему.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter