vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.8 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=235)
-   -   Board Optimization - Super Speedy UserCP (https://vborg.vbsupport.ru/showthread.php?t=220456)

Birched 08-07-2009 10:00 PM

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!

erel34 08-08-2009 04:30 PM

thanks

down.low 08-08-2009 07:11 PM

One mistake:
Quote:

##### REPLACE

if (!is_array($lastpostarray))

##### WITH

if (!i$lastpostarray)

#####
if (!i$lastpostarray)

should be the following:

if ($lastpostarray)

Birched 08-08-2009 08:21 PM

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)

#####

Kolbi 08-08-2009 09:16 PM

Are there other comments about the lower loading time?

relaxiha 08-08-2009 09:24 PM

If you put together the best images is to be determined

Kolbi 08-08-2009 09:38 PM

Quote:

Originally Posted by relaxiha (Post 1863729)
If you put together the best images is to be determined

???
Wrong thread?

gearspro 08-08-2009 10:14 PM

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.

Birched 08-08-2009 11:17 PM

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.

hotwheels 08-08-2009 11:47 PM

Wow that is pretty kewl..........I would have to say it is atleast 6x faster.

thanks a bunch.

jambo_1969 08-09-2009 05:12 AM

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.

Birched 08-09-2009 05:29 AM

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.)

unp 08-09-2009 06:54 AM

Quote:

Originally Posted by down.low (Post 1863688)
One mistake:


if (!i$lastpostarray)

should be the following:

if ($lastpostarray)

Quote:

Originally Posted by Birched (Post 1863708)
Thanks - fixed.

Its still ' if (!$lastpostarray)' in the frst post.
So what should it be ?

jambo_1969 08-09-2009 08:12 AM

Quote:

Originally Posted by unp (Post 1863942)
Its still ' if (!$lastpostarray)' in the frst post.
So what should it be ?

I'm assuming the one in the OP, as I put the amended one from the later post in, and it zero'ed all post/view counts on forum home.

unp 08-09-2009 09:41 AM

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
With if ($lastpostarray) All post/view are Zero on forumhome.

Birched 08-09-2009 10:39 AM

Quote:

Originally Posted by unp (Post 1863942)
Its still ' if (!$lastpostarray)' in the frst post.
So what should it be ?

The error was the letter 'i' that used to be there (look more closely.)

Birched 08-09-2009 10:42 AM

Quote:

Originally Posted by unp (Post 1863972)
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
With if ($lastpostarray) All post/view are Zero on forumhome.

Please post your modified code. That is what you'd get with a typo.

unp 08-09-2009 11:20 AM

I tried again and it worked.I must have done something wrong the first time.

TWTCommish 08-09-2009 09:28 PM

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.

Birched 08-10-2009 01:27 AM

Quote:

Originally Posted by TWTCommish (Post 1864230)
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.

That's what it looks like. It's easy to try, though.

merkaz 08-10-2009 06:12 PM

Amazing .

good job . thanks

NLP-er 08-12-2009 04:50 PM

Rated, installed :)

Small things can make big difference ;)

GhoHan 09-04-2009 03:24 PM

Nice idea ... good installed

testebr 09-04-2009 10:27 PM

You already reported this 'issue' on vb.com board?

nomoreturn 09-04-2009 11:08 PM

Thanks works great on 3.8.4

Birched 09-16-2009 01:03 PM

Quote:

Originally Posted by testebr (Post 1879846)
You already reported this 'issue' on vb.com board?

The problem has been mentioned previously both there (vbulletin.com) and here (vbulletin.org) (earlier by others, more recently by myself). The vbulletin coders would have to make a "substance over style" decision to implement this change in the core code, at least in the specific manner in which I've implemented it. I don't think that's very likely, but who knows? The issue has been around for a long time....

WebkinzCoast 06-24-2010 01:26 PM

Quote:

Originally Posted by TWTCommish (Post 1864230)
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.

Actually, it sped up mine by a good five seconds and I have no subscribed forums.

WebkinzCoast 06-24-2010 01:26 PM

Working great over here!

mahz 06-24-2010 03:28 PM

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!

New Joe 06-24-2010 11:12 PM

Works fine and fast.

ChiNa 07-15-2012 06:19 PM

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...

Birched 07-15-2012 06:31 PM

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)

ChiNa 07-15-2012 07:18 PM

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

Birched 07-15-2012 08:10 PM

Should be fine for 3.8.x. Definitely works for 3.8.6.

ChiNa 07-15-2012 10:59 PM

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.

tehPARADOX 08-09-2012 06:40 AM

Thanks.

career 08-10-2012 12:41 PM

can't see difference when enable it.
Pls, could you suggest how to test it.

thanks

lazytown 10-19-2012 09:54 PM

Any idea if this issue affects 4.2?

xlguy 12-05-2012 12:23 AM

Have just tried this on 3.8.7 PL2 :)

blind-eddie 12-07-2012 02:44 PM

Quote:

Originally Posted by xlguy (Post 2388532)
Have just tried this on 3.8.7 PL2 :)

Yes, don't use this edit.
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
  • Page Generation 0.01275 seconds
  • Memory Usage 1,816KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (11)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete