Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/50: Рейтинг темы: голосов - 50, средняя оценка - 4.58
zzzhenya
1

Получение значения тактовой частоты процессора

28.03.2010, 00:45. Просмотров 9563. Ответов 6
Метки нет (Все метки)

Здравствуйте!
Не могли бы Вы помочь с определением в коде тактовой частоты процессора. Задание следующее: нужно определить, сколько работает метод. Для этого берется тактовая частота до начала работы метода и после, затем вычисляется разница.
Это очень важно! Заранее благодарна за любую помощь.
Спасибо!
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2010, 00:45
Ответы с готовыми решениями:

Падение тактовой частоты процессора
Играл в игру Arma 2 резко начал проседать фпс в сопровождение фризов решил перезагрузить компьютер...

Определение тактовой частоты процессора
Добрый вечер! Дело вот в чем - пишу курсовую на тему "Определение тактовой частоты микропроцессора...

Скачки тактовой частоты процессора
Помогите пожалуйста! Уже мучаюсь больше месяца. В общем беда с процессором, тактовая частота...

Вывод тактовой частоты процессора
Здравствуйте, нашол программу на ассемблере (вроде сделана для МАСМА), помогите переделать ее для...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
6
143 / 115 / 8
Регистрация: 09.03.2010
Сообщений: 150
28.03.2010, 01:10 2
long start = DataTime.Now.Ticks;
код
long end=DataTime.Now.Ticks;

long timework = end - start;
0
1304 / 977 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
28.03.2010, 01:50 3
erlik, убить тебя мало

сабж: либо из реестра, либо сам рассчитаешь. тут про такты:
http://www.codeproject.com/KB/... Speed.aspx
тут про информацию о процессорах:
http://www.onedotnetway.com/ge... t-using-c/
0
143 / 115 / 8
Регистрация: 09.03.2010
Сообщений: 150
28.03.2010, 13:39 4
Mikant,
ты хочешь сказать что таким способом нельзя измерить время выполнения кода?
почему то у меня все измеряется - да в написании ошибся - не DataTime.Now.Ticks; а DateTime.Now.Ticks; но это легко исправляется самостоятельно.

сам я измеряю через Stopwatch()
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();

stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
System.Windows.MessageBox.Show(String.Format("Затрачено времени {0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10)

Если такой умный - что ж код то не выложил?
Отсылать куда то все тут умники...я самому слабо все это дело пояснить? Вижу что слабо. Даже не пытайся.


Кому интересно: вот так можно узнать все данные счетчиков процессора (нужно подключить System.Management; )

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ObjectQuery PerfRawData = new System.Management.ObjectQuery("SELECT * FROM Win32_PerfRawData_PerfOS_Processor");
    ManagementObjectSearcher PerfRawDataSearcher = new ManagementObjectSearcher(PerfRawData);
    ManagementObjectCollection PerfRawDataCollection = PerfRawDataSearcher.Get();
    foreach (ManagementObject obj in PerfRawDataCollection)
    {
        Console.WriteLine("Данные счетчиков производительности");
        Console.WriteLine("-----------------------------------");
        Console.WriteLine("Name: " + obj["Name"].ToString());
        Console.WriteLine("C1 переходов/сек : " + obj["C1TransitionsPersec"].ToString());
        Console.WriteLine("C2 переходов/сек: " + obj["C2TransitionsPersec"].ToString());
        Console.WriteLine("C3 переходов/сек: " + obj["C3TransitionsPersec"].ToString());
        Console.WriteLine("Скорость DPC: " + obj["DPCRate"].ToString());
        Console.WriteLine("Поставлено в очередь DPC/сек: " + obj["DPCsQueuedPersec"].ToString());
        Console.WriteLine("Frequency_Object: " + obj["Frequency_Object"].ToString());
        Console.WriteLine("Frequency_PerfTime: " + obj["Frequency_PerfTime"].ToString());
        Console.WriteLine("Frequency_Sys100NS: " + obj["Frequency_Sys100NS"].ToString());
        Console.WriteLine("Прерываний/сек:  " + obj["InterruptsPersec"].ToString());
        Console.WriteLine("% времени C1(скорость перехода в спящий режим): " + obj["PercentC1Time"].ToString());
        Console.WriteLine("% времени C2(скорость перехода в спящий режим): " + obj["PercentC2Time"].ToString());
        Console.WriteLine("% времени C3(скорость перехода в спящий режим): " + obj["PercentC3Time"].ToString());
        Console.WriteLine("% времени DPC " + obj["PercentDPCTime"].ToString());
        Console.WriteLine("Процент времени бездействия: " + obj["PercentIdleTime"].ToString());
        Console.WriteLine("% времени прерываний: " + obj["PercentInterruptTime"].ToString());
        Console.WriteLine("% работы в привилегированном режиме: " + obj["PercentPrivilegedTime"].ToString());
        Console.WriteLine("% загруженности процессора: " + obj["PercentProcessorTime"].ToString());
        Console.WriteLine("% работы в пользовательском режиме: " + obj["PercentUserTime"].ToString());
        Console.WriteLine("Timestamp_Object: " + obj["Timestamp_Object"].ToString());
        Console.WriteLine("Timestamp_PerfTime: " + obj["Timestamp_PerfTime"].ToString());
        Console.WriteLine("Timestamp_Sys100NS: " + obj["Timestamp_Sys100NS"].ToString());
        Console.ReadKey();
    }
некоторые параметры я не знаю что дают.
0
1304 / 977 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
28.03.2010, 14:07 5
" Получение значения тактовой частоты процессора " звучит сабж. я написал куда надо двигаться для этого. ты - нет. ну разве что во втором посте, но речь не о нем. про то, что время выполнения так можно измерить, никто не спорит. это естественно

Добавлено через 5 минут
Цитата Сообщение от erlik Посмотреть сообщение
Если такой умный - что ж код то не выложил?
Отсылать куда то все тут умники...я самому слабо все это дело пояснить? Вижу что слабо. Даже не пытайся.
вот и скажи, чего ты такой обиженный? я тебя обидел? ну извини! больше я тебя обижать не буду. не обижайся) на обиженных, говорят, воду возят!
0
303 / 256 / 69
Регистрация: 01.12.2008
Сообщений: 1,015
28.03.2010, 16:55 6
System.Management - это WMI ??? У меня экспресс и что то я не нашел ничего там. Вот порылся. Пространство Environment - много чего может дать..А тактовую частоту же можно из реестра считать. Оттуда вообще по моему все можно взять..


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(String.Format(
                "Число процессоров в системе:   {0}" ,
                   Environment.ProcessorCount.ToString()));
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            RegistryKey frecKey = Registry.LocalMachine;
             frecKey = frecKey.OpenSubKey(
                @"HARDWARE\DESCRIPTION\System\CentralProcessor\0", false);
           string str =  frecKey.GetValue("~MHz").ToString();
              MessageBox.Show(String.Format( "Частота Мгц:   {0}",    str));
        
        }
3
143 / 115 / 8
Регистрация: 09.03.2010
Сообщений: 150
29.03.2010, 01:10 7
wwowa,
Environment кое что дает.
например это:
C#
1
2
3
4
5
6
7
8
comboS.Items.Add("Имя машины: " + Environment.MachineName);
                comboS.Items.Add("Имя пользователя: " + Environment.UserName);
                comboS.Items.Add("Текущая платформа(номер версии): " + Environment.OSVersion);
                comboS.Items.Add("Идентификатор платформы: " + Environment.OSVersion.Platform);
                comboS.Items.Add("Время с момента загрузки системы: " + Environment.TickCount);
                comboS.Items.Add("Объем физической памяти текущего процесса:" + Environment.WorkingSet / 1024);
                comboS.Items.Add("Число процессоров: " + Environment.ProcessorCount);
                comboS.Items.Add("Командная строка текущего процесса: " + Environment.CommandLine);
Также класс Process из System.Diagnostics дает неплохую инфу о процессах.
Но далеко не все. Мне оказалось маловато.
ты даже не подозреваешь сколько может дать WMI - фактически всю системную информацию и полный контроль управления виндой - почти 5 тысяч классов для этого дела.(сам не считал но попадалась инфа с такой цифрой)
Wmi нет в пространстве имен Framework - у этого интерфейса администрирования виндой (или как там его правильно обозвать) отдельные namespace, запрос классов в C# делается через язык WQL. "SELECT * FROM Win32_PerfRawData_PerfOS_Processor" это и есть запрос на WQL.

набери в командной строке wbemtest.exe - увидишь GUI интерфейс WMI - дальше "подключить"
вводишь root\CIMv2 -> подключить и опция "классы" - рекурсивно -> OK получишь список классов namespace CIMv2 (это одно из четырех пространств имен в WMI)
двойной клик по имени класса дает список методов (если есть) и свойств класса.
описалово классов с префиксом Win32 есть частично в MSDN - но все на английском.
Использовать (вызывать) их можно через методы как раз System.Management.
Правда в WMI много чего непонятного для человека (такого как я например) абсолютно не знакомого с администрированием.
И понять (интерпретировать) некоторые возвращаемые значения свойств классов пока сложновато.

Насчет реестра не знаю - пока мало в нем рылся. Надо посмотреть что там есть.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2010, 01:10

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

Сделать, чтобы начальное значение srand зависело не от времени, а от тактовой частоты процессора
Нужно сделать так чтобы начальное значение Srand было не от времени а от тактовой частоты...

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

Умножитель тактовой частоты CPU
Здравствуйте. Вот собственно и вопрос "Что такое умножитель таковой частоты CPU". Не могу найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.