Observations on performance

Talk among developers, and propose and discuss general development planning/tackling/etc... feature in this forum.
Post Reply
shenle
Confed Special Operative
Confed Special Operative
Posts: 381
Joined: Thu Jan 31, 2008 3:25 am
Location: hiding in a dark corner

Observations on performance

Post by shenle »

I have built binaries today from the current svn (12975) on both Windows (XP SP3) and Linux (Ubuntu 9.10). I then played the game for a little while on both platforms, one after the other. Both are installed on the same computer, so the hardware is identical. This has allowed me to make the following observations:

The Linux version of VS: start time is almost instantaneous (to main menu). Starting a new campaign scenario takes perhaps 5-6 seconds of generating a new universe. The mouse pointer is responsive and does not show any perceptible lag. The menus and buttons are responsive. The flight controls have no lag. It a word, it has high playability.

The Windows version takes about 15 seconds to start (to main menu). Generating a new universe for a campaign takes 35-40 seconds. The mouse pointer has a very annoying lag of close to 1 second if not more - based on this alone, I call it unplayable.

I'm listing these issues just for the developers' benefit. There is a large performance difference between the same code running on one platform and the other. If there is an interest I will post the two binaries I have used for comparison.
make me a sandwich
make: *** No rule to make target 'me'. Stop.
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Re: Observations on performance

Post by klauss »

It sounds to me you're running debug versions of some code. Either libraries or VS itself has been built without enough performance optimizations.

VS can be a helluva lot slower in debug mode. Nearly unplayable.

You could also check your drivers, though windows tends to fair a lot better in that department than linux, so I don't expect serious driver issues.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
shenle
Confed Special Operative
Confed Special Operative
Posts: 381
Joined: Thu Jan 31, 2008 3:25 am
Location: hiding in a dark corner

Re: Observations on performance

Post by shenle »

Nope, both are built as release. Both have had all the latest OS updates and latest drivers. Not sure exactly what optimization parameters the Linux build uses (it's a cmake build), but I think the Windows version used O3 IIRC, which should provide decent overall optimizations.

Still I get a roughly 10-fold performance difference. The most annoying is the mouse lag. You move the mouse, then some time later the pointer moves :(
make me a sandwich
make: *** No rule to make target 'me'. Stop.
breese
Bounty Hunter
Bounty Hunter
Posts: 152
Joined: Thu Sep 02, 2010 8:00 pm

Re: Observations on performance

Post by breese »

shenle wrote:Still I get a roughly 10-fold performance difference. The most annoying is the mouse lag. You move the mouse, then some time later the pointer moves :(
It could be related to Python and virus scanners. See for instance http://stackoverflow.com/questions/1842 ... on-windows.
shenle
Confed Special Operative
Confed Special Operative
Posts: 381
Joined: Thu Jan 31, 2008 3:25 am
Location: hiding in a dark corner

Re: Observations on performance

Post by shenle »

Does python have anything to do with moving the mouse pointer? As for the virus scanner, I get the same performance with it disabled. Almost all background services are disabled as well, and no other apps running at the same time.
make me a sandwich
make: *** No rule to make target 'me'. Stop.
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Re: Observations on performance

Post by klauss »

Well, your usual culprits: video drivers, or optimization settings.

Do some profiling in windows to figure out where time is being lost, and try increasing/decreasing resolution and detail settings. Resolution shouldn't affect mouse lag significantly, since base interfaces are simple enough that most modern GPUs can spin circles around them, but if you notice increased performance with lower resolutions you're probably running OpenGL in software emulation which is BAD.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
shenle
Confed Special Operative
Confed Special Operative
Posts: 381
Joined: Thu Jan 31, 2008 3:25 am
Location: hiding in a dark corner

Re: Observations on performance

Post by shenle »

I see no difference in performance (loading times, mouse lag and responsiveness to controls) between 1920x1080 and 800x600. Running the latest nvidia driver (260.99 I think) OpenGL extension viewer confirms I have hardware accelerated OpenGL - and other OpenGL games show no performance hit (in particular, the flight sim IL-2)

Code: Select all

Renderer: GeForce 8800 GT/PCI/SSE2/3DNOW!
Vendor: NVIDIA Corporation
Memory: 512 MB
Version: 3.3.0
Shading language version: 3.30 NVIDIA via Cg compiler


Max texture size: 8192 x 8192
Max texture coordinates: 8
Max vertex texture image units: 32
Max texture image units: 32
Max geometry texture units: 32
Max anisotropic filtering value: 16
Max viewport size: 8192 x 8192
Max uniform vertex components: 4096
Max uniform fragment components: 4096
Max geometry uniform components: 2048
Max varying floats: 0
Max samples: 16
Max draw buffers: 8


Extensions: 216

GL_ARB_blend_func_extended
GL_ARB_color_buffer_float
GL_ARB_copy_buffer
GL_ARB_depth_buffer_float
GL_ARB_depth_clamp
GL_ARB_depth_texture
GL_ARB_draw_buffers
GL_ARB_draw_elements_base_vertex
GL_ARB_draw_instanced
GL_ARB_ES2_compatibility
GL_ARB_explicit_attrib_location
GL_ARB_fragment_coord_conventions
GL_ARB_fragment_program
GL_ARB_fragment_program_shadow
GL_ARB_fragment_shader
GL_ARB_framebuffer_object
GL_ARB_framebuffer_sRGB
GL_ARB_geometry_shader4
GL_ARB_get_program_binary
GL_ARB_half_float_pixel
GL_ARB_half_float_vertex
GL_ARB_imaging
GL_ARB_instanced_arrays
GL_ARB_map_buffer_range
GL_ARB_multisample
GL_ARB_multitexture
GL_ARB_occlusion_query
GL_ARB_occlusion_query2
GL_ARB_pixel_buffer_object
GL_ARB_point_parameters
GL_ARB_point_sprite
GL_ARB_provoking_vertex
GL_ARB_robustness
GL_ARB_sampler_objects
GL_ARB_seamless_cube_map
GL_ARB_separate_shader_objects
GL_ARB_shader_bit_encoding
GL_ARB_shader_objects
GL_ARB_shading_language_100
GL_ARB_shadow
GL_ARB_sync
GL_ARB_texture_border_clamp
GL_ARB_texture_buffer_object
GL_ARB_texture_compression
GL_ARB_texture_compression_rgtc
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar
GL_ARB_texture_env_dot3
GL_ARB_texture_float
GL_ARB_texture_mirrored_repeat
GL_ARB_texture_multisample
GL_ARB_texture_non_power_of_two
GL_ARB_texture_rectangle
GL_ARB_texture_rg
GL_ARB_texture_rgb10_a2ui
GL_ARB_texture_swizzle
GL_ARB_timer_query
GL_ARB_transpose_matrix
GL_ARB_uniform_buffer_object
GL_ARB_vertex_array_bgra
GL_ARB_vertex_array_object
GL_ARB_vertex_buffer_object
GL_ARB_vertex_program
GL_ARB_vertex_shader
GL_ARB_vertex_type_2_10_10_10_rev
GL_ARB_viewport_array
GL_ARB_window_pos
GL_ATI_draw_buffers
GL_ATI_texture_float
GL_ATI_texture_mirror_once
GL_EXT_abgr
GL_EXT_bgra
GL_EXT_bindable_uniform
GL_EXT_blend_color
GL_EXT_blend_equation_separate
GL_EXT_blend_func_separate
GL_EXT_blend_minmax
GL_EXT_blend_subtract
GL_EXT_Cg_shader
GL_EXT_compiled_vertex_array
GL_EXT_depth_bounds_test
GL_EXT_direct_state_access
GL_EXT_draw_buffers2
GL_EXT_draw_instanced
GL_EXT_draw_range_elements
GL_EXT_fog_coord
GL_EXT_framebuffer_blit
GL_EXT_framebuffer_multisample
GL_EXT_framebuffer_object
GL_EXT_framebuffer_sRGB
GL_EXT_geometry_shader4
GL_EXT_gpu_program_parameters
GL_EXT_gpu_shader4
GL_EXT_multi_draw_arrays
GL_EXT_packed_depth_stencil
GL_EXT_packed_float
GL_EXT_packed_pixels
GL_EXT_pixel_buffer_object
GL_EXT_point_parameters
GL_EXT_provoking_vertex
GL_EXT_rescale_normal
GL_EXT_secondary_color
GL_EXT_separate_shader_objects
GL_EXT_separate_specular_color
GL_EXT_shadow_funcs
GL_EXT_stencil_two_side
GL_EXT_stencil_wrap
GL_EXT_texture3D
GL_EXT_texture_array
GL_EXT_texture_buffer_object
GL_EXT_texture_compression_latc
GL_EXT_texture_compression_rgtc
GL_EXT_texture_compression_s3tc
GL_EXT_texture_cube_map
GL_EXT_texture_edge_clamp
GL_EXT_texture_env_add
GL_EXT_texture_env_combine
GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_integer
GL_EXT_texture_lod
GL_EXT_texture_lod_bias
GL_EXT_texture_mirror_clamp
GL_EXT_texture_object
GL_EXT_texture_shared_exponent
GL_EXT_texture_sRGB
GL_EXT_texture_swizzle
GL_EXT_timer_query
GL_EXT_vertex_array
GL_EXT_vertex_array_bgra
GL_EXTX_framebuffer_mixed_formats
GL_IBM_rasterpos_clip
GL_IBM_texture_mirrored_repeat
GL_KTX_buffer_region
GL_NV_blend_square
GL_NV_conditional_render
GL_NV_copy_depth_to_color
GL_NV_copy_image
GL_NV_depth_buffer_float
GL_NV_depth_clamp
GL_NV_explicit_multisample
GL_NV_fence
GL_NV_float_buffer
GL_NV_fog_distance
GL_NV_fragment_program
GL_NV_fragment_program2
GL_NV_fragment_program_option
GL_NV_framebuffer_multisample_coverage
GL_NV_geometry_shader4
GL_NV_gpu_program4
GL_NV_half_float
GL_NV_light_max_exponent
GL_NV_multisample_coverage
GL_NV_multisample_filter_hint
GL_NV_occlusion_query
GL_NV_packed_depth_stencil
GL_NV_parameter_buffer_object
GL_NV_parameter_buffer_object2
GL_NV_pixel_data_range
GL_NV_point_sprite
GL_NV_primitive_restart
GL_NV_register_combiners
GL_NV_register_combiners2
GL_NV_shader_buffer_load
GL_NV_texgen_reflection
GL_NV_texture_barrier
GL_NV_texture_compression_vtc
GL_NV_texture_env_combine4
GL_NV_texture_expand_normal
GL_NV_texture_multisample
GL_NV_texture_rectangle
GL_NV_texture_shader
GL_NV_texture_shader2
GL_NV_texture_shader3
GL_NV_transform_feedback
GL_NV_vertex_array_range
GL_NV_vertex_array_range2
GL_NV_vertex_buffer_unified_memory
GL_NV_vertex_program
GL_NV_vertex_program1_1
GL_NV_vertex_program2
GL_NV_vertex_program2_option
GL_NV_vertex_program3
GL_NVX_conditional_render
GL_NVX_gpu_memory_info
GL_S3_s3tc
GL_SGIS_generate_mipmap
GL_SGIS_texture_lod
GL_SGIX_depth_texture
GL_SGIX_shadow
GL_SUN_slice_accum
GL_WIN_swap_hint
WGL_ARB_buffer_region
WGL_ARB_create_context
WGL_ARB_create_context_profile
WGL_ARB_create_context_robustness
WGL_ARB_extensions_string
WGL_ARB_make_current_read
WGL_ARB_multisample
WGL_ARB_pbuffer
WGL_ARB_pixel_format
WGL_ARB_pixel_format_float
WGL_ARB_render_texture
WGL_ATI_pixel_format_float
WGL_EXT_create_context_es2_profile
WGL_EXT_extensions_string
WGL_EXT_framebuffer_sRGB
WGL_EXT_pixel_format_packed_float
WGL_EXT_swap_control
WGL_NV_float_buffer
WGL_NV_multisample_coverage
WGL_NV_render_depth_texture
WGL_NV_render_texture_rectangle
WGL_NVX_DX_interop

Core features
v1.1 (100 % - 7/7)
v1.2 (100 % - 8/8)
v1.3 (100 % - 9/9)
v1.4 (100 % - 15/15)
v1.5 (100 % - 3/3)
v2.0 (100 % - 10/10)
v2.1 (100 % - 3/3)
v3.0 (100 % - 23/23)
v3.1 (100 % - 8/8)
v3.2 (100 % - 9/9)
v3.3 (100 % - 9/9)
v4.0 (0 % - 0/13)
v4.1 (50 % - 4/8)

OpenGL driver version check (Current: 6.14.12.6099 Latest known: 6.14.12.6099):
Latest version of display drivers found

Compiled vertex array support
This feature improves OpenGL performance by using video memory to cache transformed vertices.

Multitexture support
This feature accelerates complex rendering such as lightmaps or environment mapping.

Secondary color support
This feature provides an alternate method of coloring specular highlights on polygons.

S3TC compression support
This feature improves texture mapping performance in some applications by using lossy compression.

Vertex array range support
This feature improves performance in some applications by using AGP for dynamic vertex transformation.

Texture edge clamp support
This feature improves texturing quality by adding clamping control to edge texel filtering.

Vertex program support
This feature enables a wide variety of effects via flexible vertex programming (equivalent to DX8 Vertex Shader.)

Fragment program support
This feature enables a wide variety of effects via per pixel programming (equivalent to DX9 Pixel Shader.)

Texture anisotropic filtering support
This feature improves the quality of texture mapping on oblique surfaces.

Occlusion test support
This feature provides hardware accelerated culling for objects.

Point sprite support
This feature improves performance in some particle systems.

OpenGL Shading Language support
This feature enables high level shading language for shaders.

Frame buffer object support
This feature enables render to texture functionality.
make me a sandwich
make: *** No rule to make target 'me'. Stop.
klauss
Elite
Elite
Posts: 7243
Joined: Mon Apr 18, 2005 2:40 pm
Location: LS87, Buenos Aires, República Argentina

Re: Observations on performance

Post by klauss »

Damn... I'm left clueless.

Must be python. I mean, I can't think of any other possibility, the only thing heavy enough to be a drag in the whole game that runs in the main menu (where you could experience mouse lag) is the base interface's python scripting.

Python must be compiled without optimizations. That's the only explanation I can find.

That, or the windows build uses some different code path that does something wrong (ie: does not cache something it should cache or something like that). Though I can't imagine how that would happen.
Oíd mortales, el grito sagrado...
Call me "Menes, lord of Cats"
Wing Commander Universe
shenle
Confed Special Operative
Confed Special Operative
Posts: 381
Joined: Thu Jan 31, 2008 3:25 am
Location: hiding in a dark corner

Re: Observations on performance

Post by shenle »

You know what? It IS OpenGL after all.

I noticed some weird behaviors in some OpenGL rendering tests, and when I went ahead and inspected the OpenGL ICD driver itself, windows/system32/nvoglnt.dll, I found out that programs had trouble loading it at all, failing often. So I tried several recent versions of the nvidia drivers, and all had the same problems.

And then I went to search the web until I found the first known version of the nvidia drivers that supported my video card (169.04, from 10/2007) and installed that. And suddenly the nvoglnt.dll is easily loaded, and vegastrike runs fast and responsive. :)

The downside is that this revision of the driver only fully supports OpenGL up to version 2.1, with only spotty support for 3.0/3.1 and basically none for higher versions.

I'm not surprised, but I am disappointed that nvidia has degraded its OpenGL support like that.
make me a sandwich
make: *** No rule to make target 'me'. Stop.
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Observations on performance

Post by pheonixstorm »

I'm running a GTX 260 with driver v258.96 and not having those problems. My load time is responsive and only takes as long as you descibe under the debug version of VS.
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
charlieg
Elite Mercenary
Elite Mercenary
Posts: 1329
Joined: Thu Mar 27, 2003 11:51 pm
Location: Manchester, UK
Contact:

Re: Observations on performance

Post by charlieg »

shenle wrote:You know what? It IS OpenGL after all.

...

I'm not surprised, but I am disappointed that nvidia has degraded its OpenGL support like that.
Nvidia drivers caused me problems on my previous laptop. It ran really well until I upgraded the drivers (as part of the ongoing update process you get with modern Linux distros) and on the next boot I could no longer get 1920x1080 and my graphics card was nerfed.

I don't think they do any QA on non-modern chipsets.
Free Gamer - free software games compendium and commentary!
FreeGameDev forum - open source game development community
shenle
Confed Special Operative
Confed Special Operative
Posts: 381
Joined: Thu Jan 31, 2008 3:25 am
Location: hiding in a dark corner

Re: Observations on performance

Post by shenle »

Hmm. Is G92 considered a non-modern chipset? They had cards in production based on it earlier this year.

Anyway - I've been with nvidia since the TNT2, but now I've started looking for a radeon. :)
make me a sandwich
make: *** No rule to make target 'me'. Stop.
pheonixstorm
Elite
Elite
Posts: 1567
Joined: Tue Jan 26, 2010 2:03 am

Re: Observations on performance

Post by pheonixstorm »

I've been running nvidia since the Riva 128 came out. And up until about 6 years ago that Riva 128 was still running (may still be.. I sold the computer it was in to my aunts preschool).

G92?? geforce 9200? If thats it its just dated but still a decent board. The thing with the x200 boards is that they are the bottom of the barrel cards. They run ok, but for non-standard games or high end stuff they aren't the best. Thats one of the reasons I only buy mid to high end graphics cards. Hell I still have a 5700 running in one of the comps around here and I doubt that VS would give it too much of an issue (might have to try it out).

Between this and the other issues you are having with VS... I hope we can track em all down and fix em.
Because of YOU Arbiter, MY kids? can't get enough gas. OR NIPPLE! How does that mkae you feeeel? ~ Halo
shenle
Confed Special Operative
Confed Special Operative
Posts: 381
Joined: Thu Jan 31, 2008 3:25 am
Location: hiding in a dark corner

Re: Observations on performance

Post by shenle »

No, G92 is used in 8800GT, 9800GT(X), GTS250.
http://mysite.verizon.net/pchardwarelinks/video.htm

8800GT is what I have.
make me a sandwich
make: *** No rule to make target 'me'. Stop.
Post Reply