vak: (Default)
[personal profile] vak
Задумался я соорудить простой тест для сравнения скорости процессоров. Чтобы чуть более практичный, чем Dhrystone. И сдаётся мне, что красно-черные деревья ровно то, что надо. Многие системные программы, скажем компиляторы, занимаются примерно тем же: выполняют разные манипуляции над графами. В языке Си++ на сбалансированных деревьях построены стандартные классы std::set и std::map. Cкорость их работы и будем замерять. А в качестве генератора данных приспособим лоренцов аттрактор.

Сделал я такие тестики: set.cpp и map.cpp. Тесты создают 2 миллиона записей, а затем эти записи по одной удаляют. Общий размер данных выходит порядка 100 мегабайт. Процесс однопоточный, то есть задействуется только одно ядро процессора. Тест выдаёт две величины: скорость (количество записей в миллисекунду) и занятую память (в байтах на одну запись).

Прогнал я эти тесты на имевшихся под рукой компьютерах:
  • макбук на процессоре Apple M2 - MacOS, clang
  • мак мини на процессоре Apple M1 - MacOS, clang
  • iMac на процессоре Intel i9 - MacOS, clang
  • ноутбук Lenovo на процессоре Intel i7 - Ubuntu, gcc
  • Raspberry Py 5 - Ubuntu, gcc
  • Raspberry Py 4 - FreeBSD, clang
  • олинуксино на процессоре ARM32 - Debian, gcc
Результаты собраны в таблицу.
                                            --------Rate--------    -------Memory-------
Processor, Computer                         std::set    std::map    std::set    std::map
----------------------------------------------------------------------------------------
Apple M2 Max (12) @ 3.70 GHz                3856.1      2997.5      32.7        48.7
MacBook Pro (16-inch, 2023)
----------------------------------------------------------------------------------------
Apple M1 (8) @ 3.20 GHz                     2608.3      2091.6      32.7        48.7
Mac mini (M1, 2020)
----------------------------------------------------------------------------------------
Intel Core i9-9900K (16) @ 3.60 GHz         2302.4      1953.3      32.4        48.5
iMac (Retina 5K, 27-inch, 2019)
----------------------------------------------------------------------------------------
Intel Core i7-8750H (12) @ 4.10 GHz         1656.6      1654.2      49.8        49.8
Lenovo ThinkPad P1
----------------------------------------------------------------------------------------
Cortex-A76 (4) @ 2.40 GHz                   775.7       788.1       49.6        49.6
Raspberry Pi 5 Model B Rev 1.0
----------------------------------------------------------------------------------------
ARM Cortex-A72 r0p3 (4) @ 1.5 GHz           527.7       490.3       34.7        50.3
Raspberry Pi 4 Model B Rev 1.2
----------------------------------------------------------------------------------------
Allwinner sun7i (A20) Family (2) @ 960MHz   149.7       141.3       25.2        33.1
Olimex A20-OLinuXino-LIME2

Date: 2024-12-09 07:54 (UTC)
ircicq: (Default)
From: [personal profile] ircicq
Замерил на Apple M3 Max.

Set:
====
Last 8.42386 8.03421 27.4317
Sum 292628
Elapsed time: 0.487 seconds
Resident memory: 65.356 Mbytes
Records per millisecond: 4104.7
Bytes per record: 32.7

Map:
====
Last 8.42386 8.03421 27.4317
Sum 292628
Elapsed time: 0.638 seconds
Resident memory: 97.468 Mbytes
Records per millisecond: 3133.6
Bytes per record: 48.7

Date: 2024-12-09 09:28 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Забавно, что четвертая пишка, официально в 2.5 раза менее шустрая, чем пятая, в вашем тесте отстает только в полтора раза. Интересно, чья єто заслуга - FreeBSD или шланга?

Date: 2024-12-17 08:33 (UTC)
From: [personal profile] sassa_nf
А чому від Intel Core i7-8750H вниз швидкодія обох функцій однакова?

До того ж, здається, що код має бути ідентичним до того, що на Intel i9 рядком вище.
Edited Date: 2024-12-17 08:37 (UTC)