aboutsummaryrefslogtreecommitdiffhomepage
path: root/ext/detours/samples/cping/ReadMe.Txt
blob: fea109590e24b134967a2cfa574e00aaaa202acb (plain)
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
Microsoft Research Detours Package
==============================================================================
4/2/98

* Instrumentation:
    Read Pentium cycle counter

* PC configuration:
    DCOM/TCP, Windows NT Server 4.0,
    between two 300MHz Pentium boxes,
    Ethernet connecction

* Client test program:
    HRESULT get(SHORT, SHORT, LONG*)
    average over 1,000 calls
    midl /Oicf

* Results:
    get() {
                    <-- (1)
      IRpcChannelBuffer::SendReceive()) {
                    <-- (2)
        I_RpcSendReceive() {
                    <-- (3)
          send(soc, )
                    <-- (4)
          NtWaitForSingleObject(soc, )
                    <-- (5)
        } // end of RPC layer
                    <-- (6)
      } // end of channel object
                    <-- (7)
    } // end of client call
                            Average number
                               of Pentium cycles
    (1) NDR marshaling overhead (2 SHORTs)      13   K
                (No! of which 11K from GetBuffer,
                     of which 6.2K from I_RpcGetBuffer()!)
    (2) Channel object one-way (send) overhead       1.0 K
    (3) RPC layer one-way (send) overhead        5.3 K
    (4) TCP + all server work                      200   K
    (5) RPC layer one-way (recv) overhead        5.1 K
    (6) Channel object one-way (recv) overhead       2.2 K
    (7) NDR unmarshaling overhead (2 LONGs)      4.2 K

    (*) send() only                 17   K
    TOTAL CYCLES for client get(): 230 K