48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 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
 |