Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.51/37: Рейтинг темы: голосов - 37, средняя оценка - 4.51
zzzhenya
0 / 0 / 0
Регистрация: 24.03.2010
Сообщений: 2
1

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

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

Здравствуйте!
Не могли бы Вы помочь с определением в коде тактовой частоты процессора. Задание следующее: нужно определить, сколько работает метод. Для этого берется тактовая частота до начала работы метода и после, затем вычисляется разница.
Это очень важно! Заранее благодарна за любую помощь.
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 00:45
Ответы с готовыми решениями:

Получение температуры процессора
проблема в следующем: при выполнении данной логики пишет что отказано в...

Получение температуры ядер процессора
Таким нехитрым образом получаю температуру процессора, а как получить...

Значения регистров процессора
Нужно получить значение регистра в текущий момент времени, например EAX....

Получение значения из Json
Добрый день, прошу вашей помощи... var result = api.ApiQuery("user_info", new...

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

6
erlik
134 / 106 / 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
Mikant
1282 / 955 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
28.03.2010, 01:50 3
erlik, убить тебя мало

сабж: либо из реестра, либо сам рассчитаешь. тут про такты:
http://www.codeproject.com/KB/system/Processor_Speed.aspx
тут про информацию о процессорах:
http://www.onedotnetway.com/get-processor-information-in-net-using-c/
0
erlik
134 / 106 / 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
Mikant
1282 / 955 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
28.03.2010, 14:07 5
" Получение значения тактовой частоты процессора " звучит сабж. я написал куда надо двигаться для этого. ты - нет. ну разве что во втором посте, но речь не о нем. про то, что время выполнения так можно измерить, никто не спорит. это естественно

Добавлено через 5 минут
Цитата Сообщение от erlik Посмотреть сообщение
Если такой умный - что ж код то не выложил?
Отсылать куда то все тут умники...я самому слабо все это дело пояснить? Вижу что слабо. Даже не пытайся.
вот и скажи, чего ты такой обиженный? я тебя обидел? ну извини! больше я тебя обижать не буду. не обижайся) на обиженных, говорят, воду возят!
0
wwowa
157 / 148 / 30
Регистрация: 01.12.2008
Сообщений: 487
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
erlik
134 / 106 / 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
29.03.2010, 01:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2010, 01:10

Получение значения CheckBox и внесение его значения в БД
Нужно получить значение checkbox и ввести эти данные в ячейку таблицы базы...

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

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


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

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

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