|
|
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Всем привет! Пожалуйста, поделитесь ссылкой или готовым c# class-ом для замера продолжительности события в наносекундах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 10:28 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1Всем привет! Пожалуйста, поделитесь ссылкой или готовым c# class-ом для замера продолжительности события в наносекундах. Нужно написать подобие ping-а ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 10:56 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
нафига вам для ping наносекунды, причем на C#? но это не значит, что настоящие извращенцы этого не могут :) итак: берете расширение дебаггера SOS для .net ставите в нем точку останова на вызове !DumpHeap, !DumpObject, !DumpMT, !DumpMD Ваша первая задача точно стырить внутренние структуры для описания типов под конкретную версию точки нет. Т.е. вам нужно найти структуру описания Типа (куда ссылается OBJREF), далее оттуда вам нужно перейти к MethodDef (эта та структура на которую указывает TypeRef у каждого объекта), там есть перечисление MethodDef. У MethodDef есть поле указывающее на либо на скопилированный код либо на IL (ну и флаг, говорячий куда смотрит указатель, типа IsJitted). так вот - далее дело за малым - вставить в уже в откомпилированный код вызовы rdtsc (это asm) и куда-нть записать общая задача безусловно сложна, а вот для одной единственной функции написать затыку которая реально считает время в тактах - впринципе я думаю не очень сложно, хотя и повозиться придется (можно сделать unsafe вставку (вначале функции и в конце), которая оставляет несколько байт для того, чтобы сказать rdtsc а потом результат из eax перегнать в память) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 21:43 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
аписко, в TypeRef ссылается на MethodTable, а в MethodTable есть указатели на MethodDesc, а уже в нем - указатель на скомпилированный код либо на IL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 21:51 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1Всем привет! Пожалуйста, поделитесь ссылкой или готовым c# class-ом для замера продолжительности события в наносекундах. http://msdn.microsoft.com/ru-ru/library/bb397808%28v=vs.90%29.aspx Не устроит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 22:19 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
DENIS_CHELTestor1Всем привет! Пожалуйста, поделитесь ссылкой или готовым c# class-ом для замера продолжительности события в наносекундах. http://msdn.microsoft.com/ru-ru/library/bb397808%28v=vs.90%29.aspx Не устроит? товарисч хочет НАНОсекунды :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 22:29 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Александр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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 22:37 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
это адские попытки HFTить на C#? )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 22:46 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
А за что Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 22:47 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Александр2товарисч хочет НАНОсекунды :) Ну да, на стареньком семпроне разрешение этого таймера 1 / 3 579 545, т.е. примерно 1/4 микросекунды. При двух подряд вызовах QueryPerformanceCounter тикает на 8 тиков, т.е. "пустой" замер занял 0.000002235 сек. На более новых платформах может и побольше разрешение. Но, блин, из вышеприведенных чисел автор-то должен уяснить, что 1/1000 от 1/1000 сек (1 микросекунда) ему с головой хватит не зависимо от того, что он меряет ибо даже просто померять "ничего" занимает 2 микросекунды (на слабом CPU конечно). Т.е. мерять еще в 1000 раз точнее обломается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 23:09 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1Есть понимание что каждое звено в сети вносит свои задержки/погрешность в этой не простой затее + еще и загруженность канала. Но нет понимания, что уровень НАНОсекунд в данном случае - это уже теория, а не практика. На практике каждый пук твоего приложения обходится в сотни раз длиннее. А еще удивляет выбранный тобой инструмент. Почему не C++? И почему многозадачная винда, которая твое приложение много раз в секунду может откладывать в сторону. Если понадобится, то даже на миллисекунды, а не на микросекунды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 23:12 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.DragonTestor1Есть понимание что каждое звено в сети вносит свои задержки/погрешность в этой не простой затее + еще и загруженность канала. Но нет понимания, что уровень НАНОсекунд в данном случае - это уже теория, а не практика. На практике каждый пук твоего приложения обходится в сотни раз длиннее. А еще удивляет выбранный тобой инструмент. Почему не C++? И почему многозадачная винда, которая твое приложение много раз в секунду может откладывать в сторону. Если понадобится, то даже на миллисекунды, а не на микросекунды. В идее, это должен быть ansembler :) нужно грузится чуть ли не на уровне биоса и так делать. Но это нереально трудоемко. Задача разовая и результат очень нужен. Можно зайти в safemode + network и там запустить С++ вспоминать надо. c# знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 23:19 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, авторПочему не C++? Или вообще asm с полным контролем происходящего. И внедриться на уровень ядра конечно же. Да и еще хотелось бы узнать, каков разброс замеров,если один и тот же узел пропинговать сотню раз? Я так понимаю, что задача применима только к локалке. И то, после испытаний может оказаться, что она ничего не показывает. Т.е. например время прохода пакета через свич и сетевухи занимает 99% времени и лишь 1% времени приходится на передвижение по кабелям. В итоге разница пинга между 50-метровым сегментом и 10-метровым составит допустим 0.5% по времени. И что дальше? Разброс измерений допустим 2-3%. Как ты собираешься увидеть разницу в 0.5% в таком разбросе? Она теряется )) А если мерять внешний мир, то извини - бред, а не задача ))) Узел на расстоянии 100 км, проходя через тормозной сервер, пингуется 300 мс, а узел на другом конце планеты - 50 мс. Какие выводы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 23:20 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon, авторВ итоге разница пинга между 50-метровым сегментом и 10-метровым составит допустим 0.5% по времени. На самом деле ее вообще не будет. Т.е. в наносекундах может и будет, только обычный комп для этого не подходящий измеритель. Проще купить спец. прибор. Ну а если не для локалки, то выше уже написал по этому поводу )) P.S.: Хочешь вычислить недоброжелателя в домашней локалке что ли? Так тогда лучше применить социально-психологические методы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 23:23 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
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# ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 23:38 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1, авторЕсли вычислить минимальное время прохождение пакета в ночное время (выбираем минимальное из тестов) до ADLS устройства и отдельно до ADSL модема, то можно вычислить расстояние между ними - вычитаем = (время до модема - время до роутера) * скорость света Ты читаешь внимательно? узел1: 2 узел2: 12 узел3: 78 узел4: 215 вычисли расстояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 23:50 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Или ты знаешь способ как пропинговать узел3 с обоих его сторон, чтобы вычислить время задержки сигнала на узле3? :o P.S.: А почему скорость света? Известно, что все сегменты сети оптические? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 23:52 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1Edd.Dragonпропущено... Но нет понимания, что уровень НАНОсекунд в данном случае - это уже теория, а не практика. На практике каждый пук твоего приложения обходится в сотни раз длиннее. А еще удивляет выбранный тобой инструмент. Почему не C++? И почему многозадачная винда, которая твое приложение много раз в секунду может откладывать в сторону. Если понадобится, то даже на миллисекунды, а не на микросекунды. В идее, это должен быть ansembler :) нужно грузится чуть ли не на уровне биоса и так делать. Но это нереально трудоемко. Задача разовая и результат очень нужен. Можно зайти в safemode + network и там запустить С++ вспоминать надо. c# знаю извините, но мне кажется вы гоните, причем по жесткому :) человека, для которого С++ вспоминать надо, наносекунды слушаться не будут :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 00:05 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Александр2Testor1пропущено... В идее, это должен быть ansembler :) нужно грузится чуть ли не на уровне биоса и так делать. Но это нереально трудоемко. Задача разовая и результат очень нужен. Можно зайти в safemode + network и там запустить С++ вспоминать надо. c# знаю извините, но мне кажется вы гоните, причем по жесткому :) человека, для которого С++ вспоминать надо, наносекунды слушаться не будут :) ну я на c++ писал взломщик RSA, но это было давно ... уже не молод. не так легко переключаться между языками сейчас больше на sql пишу. а сейчас нужно решать конкретную задачу. использую то чем владею и что подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 00:09 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1Александр2пропущено... извините, но мне кажется вы гоните, причем по жесткому :) человека, для которого С++ вспоминать надо, наносекунды слушаться не будут :) ну я на c++ писал взломщик RSA, но это было давно ... уже не молод. не так легко переключаться между языками сейчас больше на sql пишу. а сейчас нужно решать конкретную задачу. использую то чем владею и что подходит. отдайте на оутсорс и все дела, нет смысла самому корячиться, если не получается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 00:15 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1, Так что на счет выяснения времени прохождения промежуточных узлов - как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 00:16 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Александр2отдайте на оутсорс и все дела, нет смысла самому корячиться, если не получается Ну, человека, который без тени улыбки напишет микроскоп-орехокол найти будет трудно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 00:17 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Edd.DragonTestor1, Так что на счет выяснения времени прохождения промежуточных узлов - как? Контекст вопроса ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 00:18 |
|
||
|
c# class для замера продолжительность события в наносекундах
|
|||
|---|---|---|---|
|
#18+
Testor1, Да выше же. Два подряд сообщения моих с вопросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2011, 00:40 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37406907&tid=1342771]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
166ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 454ms |

| 0 / 0 |
