powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / c# class для замера продолжительность события в наносекундах
25 сообщений из 106, страница 1 из 5
c# class для замера продолжительность события в наносекундах
    #37405648
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Пожалуйста, поделитесь ссылкой или готовым c# class-ом для замера продолжительности события в наносекундах.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37405714
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Testor1Всем привет!

Пожалуйста, поделитесь ссылкой или готовым c# class-ом для замера продолжительности события в наносекундах.


Нужно написать подобие ping-а
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406785
Александр2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нафига вам для ping наносекунды, причем на C#?

но это не значит, что настоящие извращенцы этого не могут :)

итак:
берете расширение дебаггера SOS для .net
ставите в нем точку останова на вызове !DumpHeap, !DumpObject, !DumpMT, !DumpMD
Ваша первая задача точно стырить внутренние структуры для описания типов под конкретную версию точки нет. Т.е. вам нужно найти структуру описания Типа (куда ссылается OBJREF), далее оттуда вам нужно перейти к MethodDef (эта та структура на которую указывает TypeRef у каждого объекта), там есть перечисление MethodDef. У MethodDef есть поле указывающее на либо на скопилированный код либо на IL (ну и флаг, говорячий куда смотрит указатель, типа IsJitted).
так вот - далее дело за малым - вставить в уже в откомпилированный код вызовы rdtsc (это asm) и куда-нть записать

общая задача безусловно сложна, а вот для одной единственной функции написать затыку которая реально считает время в тактах - впринципе я думаю не очень сложно, хотя и повозиться придется (можно сделать unsafe вставку (вначале функции и в конце), которая оставляет несколько байт для того, чтобы сказать rdtsc а потом результат из eax перегнать в память)
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406792
Александр2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аписко,
в TypeRef ссылается на MethodTable, а в MethodTable есть указатели на MethodDesc, а уже в нем - указатель на скомпилированный код либо на IL
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406835
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Всем привет!

Пожалуйста, поделитесь ссылкой или готовым c# class-ом для замера продолжительности события в наносекундах.

http://msdn.microsoft.com/ru-ru/library/bb397808%28v=vs.90%29.aspx

Не устроит?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406863
Александр2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DENIS_CHELTestor1Всем привет!

Пожалуйста, поделитесь ссылкой или готовым c# class-ом для замера продолжительности события в наносекундах.

http://msdn.microsoft.com/ru-ru/library/bb397808%28v=vs.90%29.aspx

Не устроит?
товарисч хочет НАНОсекунды :)
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406872
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр2DENIS_CHELпропущено...


http://msdn.microsoft.com/ru-ru/library/bb397808%28v=vs.90%29.aspx

Не устроит?
товарисч хочет НАНОсекунды :)

Цель супер извращенная, но нужно измерить удаленность сетевого (ip) узла с точностью чем меньше тем лучше.
не спрашивайте зачем - просто очень нужно, если это возможно.
Есть понимание что каждое звено в сети вносит свои задержки/погрешность в этой не простой затее + еще и загруженность канала.

Код: plaintext
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
using System.Net.Sockets;
using System.Diagnostics;
using System.Threading;
using System.Net;

namespace ConsoleApplication1
{
    class Program
    {
        //C#
        [DllImport("KERNEL32")]
        public static extern int QueryPerformanceFrequency
        (
            ref Int64 lpFrequency
        );

        [DllImport("KERNEL32")]
        public static extern int QueryPerformanceCounter
        (
            ref Int64 lpPerformanceCount
        );

        static void Main(string[] args)
        {
            DateTime startTime, endTime;
            Int64 minDiff=1000000;
            Int64 freq = 0;
            Double time_ms = 0;
            Double mintime_ms = 1000000;
            Int64 mindistance = 0;
            Int64 count1 = 0;
            Int64 count2 = 0;
            Int64 distantse = 0;
            Int64 ls = 299792458;
            Int64 counts = 0;
            Int64 Overhead = 0;

            System.Net.IPAddress ipAddress = new System.Net.IPAddress(System.Net.IPAddress.Parse("127.0.0.1").GetAddressBytes());


            for (int i = 0; i < 1000; i++)
            {
                try
                {

                    if (QueryPerformanceFrequency(ref freq) != 0)
                    {

                        TcpClient tcpClient = new TcpClient();

                        count1 = 0;
                        count2 = 0;

                        QueryPerformanceCounter(ref count1);
                        tcpClient.Connect(ipAddress, 80);
                        QueryPerformanceCounter(ref count2);

                        if (count1 != 0 && count2 != 0)
                        {
                            time_ms = ((double)(count2 - count1)) / (3*freq);
                            distantse = (299792458 * (count2 - count1)) / (3*freq);
                            if (time_ms < mintime_ms)
                            {
                                mintime_ms = time_ms;
                                mindistance = distantse;
                            }

                            Console.WriteLine("Seconds:" + time_ms.ToString() + " Distantse:" + distantse.ToString());
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }

            }

            Console.WriteLine("Minimal time:" + mintime_ms.ToString()+" Minimal distance:"+mindistance.ToString());

            Console.ReadKey();

        }

    }
}



...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406880
Александр2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это адские попытки HFTить на C#? ))))
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406884
Фотография DENIS_CHEL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А за что
Код: plaintext
void Main
?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406907
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр2товарисч хочет НАНОсекунды :)

Ну да, на стареньком семпроне разрешение этого таймера 1 / 3 579 545, т.е. примерно 1/4 микросекунды. При двух подряд вызовах QueryPerformanceCounter тикает на 8 тиков, т.е. "пустой" замер занял 0.000002235 сек.

На более новых платформах может и побольше разрешение.

Но, блин, из вышеприведенных чисел автор-то должен уяснить, что 1/1000 от 1/1000 сек (1 микросекунда) ему с головой хватит не зависимо от того, что он меряет ибо даже просто померять "ничего" занимает 2 микросекунды (на слабом CPU конечно). Т.е. мерять еще в 1000 раз точнее обломается.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406910
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Есть понимание что каждое звено в сети вносит свои задержки/погрешность в этой не простой затее + еще и загруженность канала.
Но нет понимания, что уровень НАНОсекунд в данном случае - это уже теория, а не практика. На практике каждый пук твоего приложения обходится в сотни раз длиннее.

А еще удивляет выбранный тобой инструмент. Почему не C++? И почему многозадачная винда, которая твое приложение много раз в секунду может откладывать в сторону. Если понадобится, то даже на миллисекунды, а не на микросекунды.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406921
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.DragonTestor1Есть понимание что каждое звено в сети вносит свои задержки/погрешность в этой не простой затее + еще и загруженность канала.
Но нет понимания, что уровень НАНОсекунд в данном случае - это уже теория, а не практика. На практике каждый пук твоего приложения обходится в сотни раз длиннее.

А еще удивляет выбранный тобой инструмент. Почему не C++? И почему многозадачная винда, которая твое приложение много раз в секунду может откладывать в сторону. Если понадобится, то даже на миллисекунды, а не на микросекунды.

В идее, это должен быть ansembler :)
нужно грузится чуть ли не на уровне биоса и так делать.

Но это нереально трудоемко. Задача разовая и результат очень нужен.
Можно зайти в safemode + network и там запустить

С++ вспоминать надо. c# знаю
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406923
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

авторПочему не C++?
Или вообще asm с полным контролем происходящего.
И внедриться на уровень ядра конечно же.

Да и еще хотелось бы узнать, каков разброс замеров,если один и тот же узел пропинговать сотню раз? Я так понимаю, что задача применима только к локалке. И то, после испытаний может оказаться, что она ничего не показывает. Т.е. например время прохода пакета через свич и сетевухи занимает 99% времени и лишь 1% времени приходится на передвижение по кабелям. В итоге разница пинга между 50-метровым сегментом и 10-метровым составит допустим 0.5% по времени. И что дальше? Разброс измерений допустим 2-3%. Как ты собираешься увидеть разницу в 0.5% в таком разбросе? Она теряется ))

А если мерять внешний мир, то извини - бред, а не задача )))
Узел на расстоянии 100 км, проходя через тормозной сервер, пингуется 300 мс, а узел на другом конце планеты - 50 мс. Какие выводы?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406927
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.Dragon,

авторВ итоге разница пинга между 50-метровым сегментом и 10-метровым составит допустим 0.5% по времени.
На самом деле ее вообще не будет. Т.е. в наносекундах может и будет, только обычный комп для этого не подходящий измеритель. Проще купить спец. прибор.

Ну а если не для локалки, то выше уже написал по этому поводу ))

P.S.: Хочешь вычислить недоброжелателя в домашней локалке что ли?
Так тогда лучше применить социально-психологические методы.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406946
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.DragonEdd.Dragon,

авторПочему не C++?
Или вообще asm с полным контролем происходящего.
И внедриться на уровень ядра конечно же.

Да и еще хотелось бы узнать, каков разброс замеров,если один и тот же узел пропинговать сотню раз? Я так понимаю, что задача применима только к локалке. И то, после испытаний может оказаться, что она ничего не показывает. Т.е. например время прохода пакета через свич и сетевухи занимает 99% времени и лишь 1% времени приходится на передвижение по кабелям. В итоге разница пинга между 50-метровым сегментом и 10-метровым составит допустим 0.5% по времени. И что дальше? Разброс измерений допустим 2-3%. Как ты собираешься увидеть разницу в 0.5% в таком разбросе? Она теряется ))

А если мерять внешний мир, то извини - бред, а не задача )))
Узел на расстоянии 100 км, проходя через тормозной сервер, пингуется 300 мс, а узел на другом конце планеты - 50 мс. Какие выводы?

Конечный IP - ADSL модем. Он бывает не загруженным.
Пункт в 9 хопах.

Если вычислить минимальное время прохождение пакета в ночное время (выбираем минимальное из тестов) до ADLS устройства и отдельно до ADSL модема, то можно вычислить расстояние между ними - вычитаем = (время до модема - время до роутера) * скорость света

возникла смешная проблема
если на модеме есть открытые порты, то на роутере их нет.
то есть нет возможности зацепиться за открытие TCP порта.
как можно по другому сделать на C# ?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406952
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

авторЕсли вычислить минимальное время прохождение пакета в ночное время (выбираем минимальное из тестов) до ADLS устройства и отдельно до ADSL модема, то можно вычислить расстояние между ними - вычитаем = (время до модема - время до роутера) * скорость света

Ты читаешь внимательно?

узел1: 2
узел2: 12
узел3: 78
узел4: 215

вычисли расстояние.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406954
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или ты знаешь способ как пропинговать узел3 с обоих его сторон, чтобы вычислить время задержки сигнала на узле3? :o

P.S.: А почему скорость света? Известно, что все сегменты сети оптические?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406963
Александр2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Edd.Dragonпропущено...

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

А еще удивляет выбранный тобой инструмент. Почему не C++? И почему многозадачная винда, которая твое приложение много раз в секунду может откладывать в сторону. Если понадобится, то даже на миллисекунды, а не на микросекунды.

В идее, это должен быть ansembler :)
нужно грузится чуть ли не на уровне биоса и так делать.


Но это нереально трудоемко. Задача разовая и результат очень нужен.
Можно зайти в safemode + network и там запустить

С++ вспоминать надо. c# знаю
извините, но мне кажется вы гоните, причем по жесткому :)
человека, для которого С++ вспоминать надо, наносекунды слушаться не будут :)
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406966
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр2Testor1пропущено...


В идее, это должен быть ansembler :)
нужно грузится чуть ли не на уровне биоса и так делать.


Но это нереально трудоемко. Задача разовая и результат очень нужен.
Можно зайти в safemode + network и там запустить

С++ вспоминать надо. c# знаю
извините, но мне кажется вы гоните, причем по жесткому :)
человека, для которого С++ вспоминать надо, наносекунды слушаться не будут :)

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

сейчас больше на sql пишу.

а сейчас нужно решать конкретную задачу. использую то чем владею и что подходит.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406972
Александр2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1Александр2пропущено...

извините, но мне кажется вы гоните, причем по жесткому :)
человека, для которого С++ вспоминать надо, наносекунды слушаться не будут :)

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

сейчас больше на sql пишу.

а сейчас нужно решать конкретную задачу. использую то чем владею и что подходит.
отдайте на оутсорс и все дела, нет смысла самому корячиться, если не получается
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406973
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

Так что на счет выяснения времени прохождения промежуточных узлов - как?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406978
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр2отдайте на оутсорс и все дела, нет смысла самому корячиться, если не получается
Ну, человека, который без тени улыбки напишет микроскоп-орехокол найти будет трудно )))
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406979
Testor1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.DragonTestor1,

Так что на счет выяснения времени прохождения промежуточных узлов - как?

Контекст вопроса ?
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406994
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Testor1,

Да выше же. Два подряд сообщения моих с вопросами.
...
Рейтинг: 0 / 0
c# class для замера продолжительность события в наносекундах
    #37406996
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edd.DragonTestor1,

Да выше же. Два подряд сообщения моих с вопросами.

И там первым вопросом: " Ты читаешь внимательно? "
...
Рейтинг: 0 / 0
25 сообщений из 106, страница 1 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / c# class для замера продолжительность события в наносекундах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]