[vtkusers] Profiling with Static Mappers and/or ImmediateModeRendering

Affolter Martin martin.affolter at ntb.ch
Fri Sep 17 04:13:01 EDT 2010


Hi vtkusers

I did not get any input on my last e-mail (Profiling VTK 5.6), but I'm not giving up yet ;)

Here are some measuring-results from our application (R&D). I ran it with static mappers on (suggested by Berk Geveci) and also tried immediatemoderendering (FAQ). None of these approaches gave me a decent performance, but I observed some interesting things:

1. With ImmediateModeRenderingOff most of the time is spent in "_RtlpFindAndCommitPages". This is the call stack, unfortunately the calling frame is unkown:

Function Name	
ARinnotech.exe	
	__CorExeMain_Exported at 0	(mscoree.dll)
		Unknown Frame(s)	(UNKNOWN)
			operator new(unsigned int) (MSVCR100.dll)
				_malloc (MSVCR100.dll)
					_RtlAllocateHeap at 12 (ntdll.dll)
						_RtlpExtendHeap at 8	(ntdll.dll)
							_RtlpFindAndCommitPages at 16(ntdll.dll)


2. With all mappers set to static the meshes are not shown. This might be, because we use vtkPolyDataNormals as input for the mapper.

I am still looking for the cause of the performance-drop VTK 4.4 -> 5.6., any comments, hints or suggestions are welcome!

Thanks
Martin

Here is the profiling-data:

--------------------------- StaticOn, ImmediateModeRenderingOn except on meshes ------------------------------
Hot Path
Function Name												Inclusive Samples %	Exclusive Samples %
vtkRenderWindow::DoStereoRender(void)								22.89				0.00
ClassCAD.ManVTKView.HandleWindowMessage(native int,int32,native int,native int)	21.89				0.00
[atioglxx.dll]												13.86				1.46
vtkExecutive::GetOutputData(int)									9.44				0.09
CLRStubOrUnknownAddress											8.88				0.00

Functions Doing Most Individual Work
Name												Exclusive Samples %
[atioglxx.dll]										14.27
vtkInformation::GetAsObjectBase(class vtkInformationKey *)			12.19
vtkPainter::UpdateBounds(double * const)						8.17
vtkInformationVector::GetInformationObject(int)				4.83
vtkAlgorithm::GetNumberOfOutputPorts(void)					4.70


--------------------------- StaticOn, ImmediateModeRenderingOn ------------------------------
Hot Path
Function Name												Inclusive Samples %	Exclusive Samples %
__CorExeMain_Exported at 0											100.00			0.00
Unknown Frame(s)												79.29				0.00
vtkRenderWindow::DoStereoRender(void)								28.78				0.00
[atioglxx.dll]												14.21				1.01
vtkExecutive::GetOutputData(int)									11.15				0.27

Functions Doing Most Individual Work
Name												Exclusive Samples %
[atioglxx.dll]										14.60
vtkPainter::UpdateBounds(double * const)						12.19
vtkInformation::GetAsObjectBase(class vtkInformationKey *)			8.04
vtkAlgorithm::GetNumberOfOutputPorts(void)					4.77
vtkInformationVector::GetInformationObject(int)				4.46


--------------------------- StaticOff, ImmediateModeRenderingOn ------------------------------
Hot Path
Function Name												Inclusive Samples %	Exclusive Samples %
vtkStreamingDemandDrivenPipeline::Update(int)							15.78				0.09
[atioglxx.dll]												9.73				1.25
vtkDemandDrivenPipeline::UpdateDataObject(void)						7.55				0.03
CLRStubOrUnknownAddress											6.77				0.00
vtkExecutive::GetOutputData(int)									6.24				0.25

Functions Doing Most Individual Work
Name												Exclusive Samples %
vtkInformation::GetAsObjectBase(class vtkInformationKey *)			18.84
[atioglxx.dll]										10.07
vtkPainter::UpdateBounds(double * const)						4.90
vtkInformationVector::GetInformationObject(int)				3.15
vtkAlgorithm::GetNumberOfOutputPorts(void)					2.96

--------------------------- StaticOn, ImmediateModeRenderingOff ------------------------------
Hot Path
Function Name											Inclusive Samples %	Exclusive Samples %
operator new(unsigned int)									63.54				0.00
_malloc												63.54				0.02
_RtlAllocateHeap at 12										63.50				0.63
_RtlpExtendHeap at 8											62.24				0.00
_RtlpFindAndCommitPages at 16									62.24				62.24

Functions Doing Most Individual Work
Name													Exclusive Samples %
_RtlpFindAndCommitPages at 16									62.51
[atioglxx.dll]											4.16
vtkPainter::UpdateBounds(double * const)							3.72
vtkInformation::GetAsObjectBase(class vtkInformationKey *)				2.44
vtkSubjectHelper::InvokeEvent(unsigned long,void *,class vtkObject *)		2.10


--------------------------- StaticOff, ImmediateModeRenderingOff ------------------------------
Hot Path
Function Name											Inclusive Samples %	Exclusive Samples %
operator new(unsigned int)									62.18	0.00
_malloc												62.18	0.06
_RtlAllocateHeap at 12										62.09	0.36
_RtlpExtendHeap at 8											61.27	0.00
_RtlpFindAndCommitPages at 16									61.27	61.27

Functions Doing Most Individual Work
Name													Exclusive Samples %
_RtlpFindAndCommitPages at 16									72.66
vtkInformation::GetAsObjectBase(class vtkInformationKey *)				4.95
[atioglxx.dll]											2.94
vtkPainter::UpdateBounds(double * const)							1.39
vtkSubjectHelper::InvokeEvent(unsigned long,void *,class vtkObject *)		1.04



------------------------------------------------
Martin Affolter

Interstaatliche Hochschule für Technik Buchs NTB
Institut für Ingenieurinformatik
NTB Campus Waldau St.Gallen
Schönauweg 4 / Postfach
9013 St. Gallen
Tel. ++41 81 755 32 49
Fax  ++41 81 755 32 01

http://institute.ntb.ch/inf.html 




More information about the vtkusers mailing list