View Issue Details

IDProjectCategoryView StatusLast Update
0005975Multi Theft Auto : San AndreasClientpublic2011-04-14 08:51
ReporterarranTunaAssigned Toccw 
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Product Version 
Target Version1.1Fixed in Version1.1 
Summary0005975: Severe performance loss in 1.1 unstables
Description

After being minimized from scripting and maximizing again it takes about three to four times longer than on 1.0.4 and older 1.1 nightlies to finish maximizing (full screen)

You will need to join a server before it takes so long, it doesn't take as long from main menu but if you join a server, disconnect and try the main menu maximizing that will also take a long time.

I was thinking that maybe parts of scripts are causing this so I checked in the new performance browser (which has client script info) and found that dxscoreboard was at times using 50% CPU even when there is only one player on the server.

Usually after coming back from a minimize FPS would be normal however this recently changed and is more like 5 FPS for a moment. I stopped 3 of the most consuming scripts (dxscoreboard, realdriveby and customblips) and when I maximize now FPS reading is around 35 which is normal.

The scripts that are consuming a lot more than they used to have one thing in common and thats the use of onClientRender. This is not just me this is everybody who I've played the recent 1.1 unstables with.

While typing this I found something very interesting:
http://cit-project.net/arran/mta11unstableperformance.png

pingkick and killmessages are both things which also use onClientRender. Killmessages using that much CPU when nobody is being killed? Something really got messed up.

Steps To Reproduce

I've found a good way to reproduce:

  1. Get anything above r2452 (the first time I noticed the problem)
  2. Get on the server and get monitoring your client performance in browser.
  3. Do this in runcode: crun addEventHandler("onClientRender", root, function() outputDebugString(tostring(getTickCount())) end)
  4. Monitor performance browser for runcode.
  5. To make it heavily spike minimize the game and then maximize it.
  6. Monitor again.
TagsNo tags attached.

Activities

Issue History

Date Modified Username Field Change