![]() |
Super Speedy UserCP
1 Attachment(s)
TIME TO INSTALL: 10 seconds (requires editing of one file in one place)
This simple code modification increases my usercp.php loading speed by 6x. I think it will be most useful in cases where there are many subscribed forums. It is listed as a modification for version 3.8.3 (which I am currently working with), but this mod works as far back as 3.0.1 (the 'find' text might be slightly different, but the function name and the text you replace is the same). EDIT: Tested up to 3.8.4. It works because the php function is_array() is excruciatingly slow, and an empty array gives the same return value as an empty variable. This code would likely break if someone introduced a location in the code where the $lastpostarray variable was set to something (i.e. not nothing) that was not an array. There are lots of these checks in the vBulletin code. It's likely that further speed increases could be achieved by changing more of them -- just remember that there is an unlikely circumstance (see previous paragraph) where it would cause problems. If you find other locations with significant effects, please post them in a reply! ##### IN FILE functions_forumlist.php ##### FIND function construct_forum_bit($parentid, $depth = 0, $subsonly = 0) { global $vbulletin, $stylevar, $vbphrase, $show; global $imodcache, $lastpostarray, $counters, $inforum; // this function takes the constant MAXFORUMDEPTH as its guide for how // deep to recurse down forum lists. if MAXFORUMDEPTH is not defined, // it will assume a depth of 2. // call fetch_last_post_array() first to get last post info for forums if (!is_array($lastpostarray)) ##### REPLACE if (!is_array($lastpostarray)) ##### WITH if (!$lastpostarray) ##### And that's it! Enjoy, and I hope it helps! |
thanks
|
One mistake:
Quote:
should be the following: if ($lastpostarray) |
Thanks - fixed.
EDIT: To be clear -- there used to be a typo with an 'i'. The correct replacement is what is stated in the original post, and not what is stated in the post before this one. i.e. the following is correct: ##### REPLACE if (!is_array($lastpostarray)) ##### WITH if (!$lastpostarray) ##### |
Are there other comments about the lower loading time?
|
If you put together the best images is to be determined
|
Quote:
Wrong thread? |
Thanks i wouldnt say 6x quicker but it is faster :)
Didnt work the 1st time :( tryed again then it worked, must of done something wrong. |
Based on microstats, I went from 32 seconds to 5 seconds with this one change (caching was turned off at the time). I saw a similar improvement when I did this with older boards. It will definitely depend on the number of times the code loops through that call -- so if you have more subscribed forums, or forums with more content, it will help more.
Others are definitely invited to post their measurements here. I'd be interested in how much it helps in other situations. |
Wow that is pretty kewl..........I would have to say it is atleast 6x faster.
thanks a bunch. |
It is a bit quicker, HOWEVER, it zero's all the stats from the main forum.php page - so it looks like there are no posts and no views.
|
That doesn't happen for me at all -- check your braces (it sounds like you may have corrupted the surrounding function?), and if that doesn't fix it, then post in your change here for me to look at (or pm it.)
|
Quote:
Quote:
So what should it be ? |
Quote:
|
I get and error with if (!$lastpostarray)
Code:
Parse error: syntax error, unexpected T_VARIABLE in /home/unp/public_html/includes/functions_forumlist.php on line 156 |
Quote:
|
Quote:
|
I tried again and it worked.I must have done something wrong the first time.
|
I assume this only speeds up the UserCP if the user has subscribed to forums? I ask because very few of my users use that feature.
|
Quote:
|
Amazing .
good job . thanks |
Rated, installed :)
Small things can make big difference ;) |
Nice idea ... good installed
|
You already reported this 'issue' on vb.com board?
|
Thanks works great on 3.8.4
|
Quote:
|
Quote:
|
Working great over here!
|
Cool. I have a large forum with a lot of heavy subscribed-threads usage. I already marked Installed and rated (I love simple code optimizations), but I like numbers/metrics and would like to see if it changes anything and by what margin.
What's a good way to see page load times? I'm a total noob. :o How do I turn off caching, too, so I can get more realistic numbers? Thanks! |
Works fine and fast.
|
Somebody said that he made a mistake,,, Now can anyone follow up to what is right 1 or 2?
Options1: if (!i$lastpostarray) Option2: if ($lastpostarray) Thank you in advance... |
I am using it as written in the OP.
EDIT: to be clear: the typo a few years back was that I had an extra 'i' in the code. You want to use the text in the original post, which is not option 1 or option 2 in your post, but: Option 3: if (!$lastpostarray) |
Ohh Ok, U actually have edited your post then, bcoz that was what I did use too.. if (!$lastpostarray)
One last question, is it ok to use on a vBulletin 3.8.6 or 3.8.7.. I mean I wont get later any affect on my other pages or maybe errors... Thanks for the tip |
Should be fine for 3.8.x. Definitely works for 3.8.6.
|
Thanks, Birched, What about the 3.8.7, its Same as 3.8.6, Am sure it will work out too.. Coz almost the optiones and files are same, Thanks a lot for your time mate... Appreciated.
|
Thanks.
|
can't see difference when enable it.
Pls, could you suggest how to test it. thanks |
Any idea if this issue affects 4.2?
|
Have just tried this on 3.8.7 PL2 :)
|
Quote:
It shows forum home to have zero post & sets all forums to private, But, your results may differ. |
All times are GMT. The time now is 04:35 PM. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
![]() |
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|