Делаются операции: - возведение в степень; получения косинуса; - суммирование, деление, умножение, округление чисел; - изменение регистра строки, поиск-замена по строке; - конвертация числа в строку, конкатенация строк; - поиск ключа в словаре, добавление в словарь; - поиск регулярными выражениями по файлам.
Изменения в версии 2.0: - измеряется скорость на одном, двух или всех ядрах; - бенчмарк делает комплексное измерение разных операций; - увеличено время работы бенчмарка для повышения точности.
Исходный код:
Код:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Diagnostics; using System.Linq; using System.Text; using System.IO; using System.Threading; using System.Management; using System.Management.Instrumentation; using System.Threading.Tasks; using System.Security.Permissions; using Microsoft.Win32; using System.Text.RegularExpressions; using System.Windows.Forms;
namespace benchmark { public partial class Form1 : Form { string HomeDir = Application.StartupPath;
int remainingToProcess = 32; ManualResetEvent mre = new ManualResetEvent(false); int CheckedFiles = 0; string[] files = new string[] { };
public Form1() { InitializeComponent();
int cores = (Environment.ProcessorCount);
tabControl1.SelectedIndex = 1;
textBox2.Text = @" Бенчмарк делает комплексное измерение быстродействия процессора в однопоточном и многопоточном режимах.
Делаются операции: - возведение в степень; получения косинуса; - деление, умножение, суммирование, округление чисел; - изменение регистра строки, поиск-замена по строке; - конвертация числа в строку, конкатенация строк; - поиск ключа в словаре, добавление в словарь; - поиск регулярными выражениями по файлам.
Изменения в версии 2.0: - измеряется скорость на одном, двух или всех ядрах; - делаются комплексные измерения для разных операций; - увеличено время работы для повышения точности. "; }
if (!Directory.Exists(HomeDir + "/testfiles")) { try { Directory.CreateDirectory(HomeDir + "/testfiles"); } catch { MessageBox.Show("Не удалось создать директорию\r\nдля тестовых файлов.\r\n\r\nПопробуйте запустить бенчмарк\r\nс правами администратора.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } }
string text = "Милдронат был изобретен в середине 1970-х годов в Институте Органического синтеза Латвии. В 1976 г. Милдронат получил первую лицензию - Сертификат авторов СССР. С 1984 г. препарат разрешено применять в медицине. В 1992 г. Милдронат был зарегистрирован в Латвии. Медикамент производит латвийское АО Гриндекс";
//создаем новые файлы try { for (int i = 1; i <= 32; i++) using (StreamWriter sw = new StreamWriter(HomeDir + "/testfiles/" + i.ToString() + ".testdata", false, Encoding.Default)) for (int c = 1; c < 10000; c++) sw.WriteLine(text); } catch { MessageBox.Show("Не удалось записать тестовые файлы\r\nдля выполнения бенчмарка.\r\n\r\nПопробуйте запустить бенчмарк\r\nс правами администратора.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); }
public void ProcessMath(int cores) { HashSet<string> hash = new HashSet<string>();
var result = Parallel.For(1, 200000000, new ParallelOptions { MaxDegreeOfParallelism = cores }, i => { //деление, умножение, суммирование, возведение в степень double a = Math.Pow(((double)i / 3 * 2) + 1, 2);
//расчет косинуса double cos = Math.Cos(a);
//округление a = Math.Round(a, 2);
//для части значений делаем операции со строками if (i % 25 == 0) { //конвертация в строку string b = a.ToString();
//конкатенация строк string c = b + " постфикс";
//изменение регистра c = c.ToUpper();
//поиск и замена по строке c = c.Replace("1", ".");
if (i % 100 == 0) { //поиск и добавление в словарь if (!hash.Contains(c)) lock (hash) hash.Add(c); } } }); }
public void ProcessFiles(int cores) { remainingToProcess = 32; mre = new ManualResetEvent(false);
public Bitmap getControlScreenshot(Control c) { Bitmap res = new Bitmap(c.Width, c.Height); c.DrawToBitmap(res, new Rectangle(Point.Empty, c.Size)); return res; }
По сравнению с 8700К коэфф. ускорения походу пьян или гонит,
У него 8700K разогнан до 5 Ггц. У тебя 2.8 Ггц + буст. Ты же не разгонял ноутбук? Еще у него 6 ядер десктопных разогнанных, а у тебя 4 неразогнанных ноутбучных. Так что двукратное преимущество вполне может быть.
Добавлено спустя 8 минут 39 секунд:
Kosmo12 писал(а):
Для начала этот тест исполнялся бы в кеше на ассемблере со всякими SSE
Сейчас уже мало кто программирует на ассемблере, куча программ пишется именно на c# и java. Тест выполняет наиболее стандартные и распространенные операции, которые встречаются в большинстве программ.
p.s. Проверь: у тебя может еще оперативка медленная или в одноканальном режиме работает. Одной из операций (не главной, но все же) является поиск значений по словарю и добавление в словарь. Здесь оперативка важна.
При запуске бенчмарка с ноутбука убедись, что он питается от сети, а остальные программы выключены.
Последний раз редактировалось Kosmo12 10.03.2018 12:05, всего редактировалось 1 раз.
7700HQ не разгоняется. Нет возможности. Питался от сети, уже последний аптайм неделю. Насчет ассемблера не надо, критичные части реально пишутся на нем, я и сам писал в порыве энтузиазма, так что не надо. 4,42 по твоей просьбе все отрубить, даже гаджеты и Тотал коммандер, винда 8.1, разгона никакого нету на ноуте.
7700HQ не разгоняется. Нет возможности. Питался от сети, уже последний аптайм неделю. 4,42 по твоей просьбе все отрубить, даже гаджеты и Тотал коммандер, винда 8.1, разгона никакого нету на ноуте.
Попробуй еще старый бенчмарк. Так делается только одна операция - поиск регулярными выражениями по файлам: Новый бенчмарк - многопоточный парсинг файлов (CPU + SSD) И сравни свой результат с моим в первом посту темы. Возможно, у тебя где-то затык происходит (память в одноканальном, диск медленный, процессор не бустится).
Последний раз редактировалось Kosmo12 10.03.2018 12:45, всего редактировалось 1 раз.
Еще раз космо и парсер перенес на ssd nvme SM951, он бодрый, все отрубил и запуск показал у космо 52,38/27,35/12,01=4,36 и парсер 23,26/6,69=3.48 Теоретически имхо что офиц тесты считают рейтинг чемоданом, поэтому, но - или есть какие то оптимальные конструкции загрузки регистров и типов совмещаемых команд, оптимизация которых в разных поколениях отличается, ну и завышенность рейтингов не исключается. Возможно расчет рейтинга не линейный. И что есть 1,0 ? почему то показывает высокий рейтинг для камней с большим кешем, имхо трешуется бенч из кеша.
Ну, это нормальные результаты по сравнению с моим i7-3610qm (4Гб x 2 + Samsung EVO 850).
SVG4K писал(а):
поэтому, но - или есть какие то оптимальные конструкции загрузки регистров и типов совмещаемых команд, оптимизация которых в разных поколениях отличается, ну и завышенность рейтингов не исключается.
Есть мнение, что официальные тесты показывают для новых процессоров завышенные результаты, чтобы их покупали. Там у интела разница по 5% между поколениями.
У меня же в тесте выполняются наиболее часто используемые операции, которые встречаются в любых программах. Это математика, операции со строками и регулярные выражения, поиск по словарю. Результат отображается линейный.
Я распределил задачи таким образом, чтобы они исполнялись примерно равное количество времени (а не так, чтобы математика за 1 секунду, а остальное - за 59 секунд). То есть, тест должен быть "средневзвешенный" и сбалансированный.
В многопотоке загрузка проца 60-70% - так и должно быть?
В тесте есть некоторые операции, которые загружают на 100% (математика, обработка строк). Но при этом есть операции, которые могут упираться в работу с памятью (поиск и добавление в словарь) или в медленный диск (поиск регулярными выражениями по файлам).
Я могу сделать полностью синтетический тест, который будет нагружать на 100%, но в этом тесте показана характерная производительность для реальных задач. И процессоры intel и amd находятся в одинаковых условиях. Если сравнить ваш результат с разогнанным выше 8700K, то результаты вполне адекватны (быстрей в многопотоке за счет 8 ядер, медленней в одном потоке, т.к. ниже частота).
Последний раз редактировалось Kosmo12 10.03.2018 19:52, всего редактировалось 1 раз.
то есть если закинуть тест на ссд, то увеличится загрузка и попугаи?
Результат на SSD будет быстрей, но не критично, поскольку чтение файлов занимает только часть теста. Но если у вас HDD висит внешний на USB 2.0 или ноутбучный 5400 оборотов, тогда разница будет заметна. Так что лучше запускать на самом быстром диске в системе.
От скорости оперативки также зависит, но не весь тест, а частично.
Повторюсь : 3610 - 54,04/28,43/13,29=4,07 8700 - 27,48/14,21/5,14=5,35 Налицо двукратное превосходство, а результат ускорения показывает +31%, это вообще о чем ? Есть один четкий тест который показывает без обмана, это к примеру Deshaker под VirtualDub. Он тебе мало того что надежно разгон завесит, в тяжелом сеттинге, и реально покажет в секундах. А +31% против двукратной мощи - это шлак. И дисковым тестом в таком случае надо еще проверить, имеет ли смысл вообще !
Налицо двукратное превосходство, а результат ускорения показывает +31%, это вообще о чем ?
Наверное, ты не понял смысла "коэффициента ускорения". Это просто разница по скорости в одном потоке против многопотока на одном и том же процессоре. То есть, это коэффициент распараллеливания.
У 4-ядерников будет коэффициент в районе 3,5 - 4. Если есть гипертрединг, то может быть и чуть выше 4. На 8-ядерниках коэффициент будет в районе 6 - 8.
Последний раз редактировалось Kosmo12 10.03.2018 20:30, всего редактировалось 4 раз(а).
Member
Статус: Не в сети Регистрация: 30.04.2015 Откуда: Россия Фото: 623
SVG4K, чего тебе всё нужно? Это лишь говорит о том, что у теста не слишком высокий показатель степени распараллеливаемости (или, как сказал аффтар, идёт упор не в проц). По тому же cpu-z у меня 10+, а тут ниже 8.
Member
Статус: Не в сети Регистрация: 21.07.2012 Откуда: г. Тула Фото: 12
4800@3200 17-17-17
Вложение:
результаты.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении. _________________ I7-8700K\GIGABYTE Z370 AORUS GAMING 7\F4-3200C14D-16GTZ\Gigabyte Aorus RTX 3080 MASTER 12Гб \Thermaltake TPX-1275M \SSD KINGSTON SHPM2280P2H/240G
Сейчас этот форум просматривают: Gigamal и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения