[Vtigercrm-developers] performance and profiling
lajeesh k
lajeeshk at gmail.com
Tue Oct 6 08:36:22 GMT 2015
applied to_html changes, still detail view taking 20 seconds to load page.
summery view loading quickly
I have used xdebud and webgrind for profiling. I am a newbie in profiling
while checking vtranslate function inside
Vtiger_Field_Model->getPicklistValues is one of the reason for this slownes
I have attached webgrind screenshot, it might help someone to identify the
bottleneck
Regards,
Lajeesh
On Mon, Oct 5, 2015 at 10:25 PM, lajeesh k <lajeeshk at gmail.com> wrote:
> seems these suggestions from Alan is not included in vtiger 6.3.
> when i used xdebug profiling, this to_html function is called 226985
> times. calling this function increases as number of records increases
> I couldn't understand how to apply these changes by Alan and Sivakumar.if
> Anyone can provide these modified file for vtiger 6.3, then it will be
> really helpfull
>
>
>
> Regards,
> Lajeesh
>
> On Tue, Jul 22, 2014 at 6:23 PM, SivaKumar J <sivakumar.j at vtiger.com>
> wrote:
>
>> Hi Alan,
>>
>> Thank you very much for your contribution on to_html() function calls to
>> improve performance.
>> After analyzing to_html() function, we got that some of those checks what
>> we are checking in that are not required any more in Vtiger6.
>>
>> at line 366
>>
>>> *if($_REQUEST['module'] != 'Settings' && $_REQUEST['file'] != 'ListView'
>>> && $_REQUEST['module'] != 'Portal' && $_REQUEST['module'] != "Reports")//
>>> && $_REQUEST['module'] != 'Emails')*
>>> * $ajax_action = $_REQUEST['module'].'Ajax';*
>>>
>> The above check is to identify whether the current request is AJAX or
>> not. If so, we are setting that as *$_REQUEST['module'].'Ajax'. *But,
>> there are not AJAX file in Vtiger6 in that structure. So, we don't need
>> this.
>>
>> at line 371
>>
>>> *if($action != 'CustomView' && $action != 'Export' && $action !=
>>> $ajax_action && $action != 'LeadConvertToEntities' && $action !=
>>> 'CreatePDF' && $action != 'ConvertAsFAQ' && $_REQUEST['module'] !=
>>> 'Dashboard' && $action != 'CreateSOPDF' && $action != 'SendPDFMail' &&
>>> (!isset($_REQUEST['submode'])) )*
>>> * {*
>>> * $doconvert = true;*
>>> * }*
>>
>> In this check, except "Export" we don't have any actions like what we
>> are comparing, so no need of this comparision. Earlier there is an action
>> called Export for Exporting record in Vtiger5.4.0, but now we are using
>> ExportData.php for this action. While Exporting record, at
>> *modules/Vtiger/actions/ExportData.php* we are sanitizing all values
>> which will decode those values with decode_html() on line 243. So, there is
>> no use of encoding with to_html() for Export as well. We can remove this
>> also. Else, we need to add this here and remove decode_html() where we are
>> doing in sanitize values.
>>
>>
>> After doing all these modification, finally my code is like this.
>>
>> */***
>>> * * Function to decide whether to_html should convert values or not for
>>> a request*
>>> * * @global type $doconvert*
>>> * * @global type $inUTF8*
>>> * * @global type $default_charset*
>>> * */*
>>> *function decide_to_html(){*
>>> * global $doconvert,$inUTF8,$default_charset; *
>>> * $action = $_REQUEST['action']; *
>>>
>>> * $inUTF8 = (strtoupper($default_charset) == 'UTF-8'); *
>>>
>>> * $doconvert = true; *
>>>
>>>
>>
>> // Need to remove decode_html() which we are doing while exporting
>>> records from list/Detail view on ExportData.php line 243
>>>
>> * if($action == 'ExportData'){*
>>> * $doconvert = false; *
>>> * }*
>>> *}*
>>> // Execute this function when this file got included
>>> *decide_to_html();*
>>>
>>> */** Function to convert the given string to html*
>>> * * @param $string -- string:: Type string*
>>> * * @param $ecnode -- boolean:: Type boolean*
>>> * * @returns $string -- string:: Type string*
>>> * */*
>>> *function to_html($string, $encode=true) {*
>>> * // For optimization - default_charset can be either upper / lower
>>> case.*
>>> * global $doconvert,$inUTF8,$default_charset,$htmlCache;*
>>>
>>> * if(is_string($string)) {*
>>> * // In vtiger5 ajax request are treated specially and the data
>>> is encoded*
>>> * if ($doconvert == true) {*
>>> * if(isset($htmlCache[$string])){*
>>> * $string = $htmlCache[$string];*
>>> * }else{*
>>> * if($inUTF8)*
>>> * $string = htmlentities($string, ENT_QUOTES,
>>> $default_charset);*
>>> * else*
>>> * $string = preg_replace(array('/</', '/>/', '/"/'),
>>> array('<', '>', '"'), $string);*
>>>
>>> * $htmlCache[$string] = $string;*
>>> * }*
>>> * }*
>>> * }*
>>> * return $string;*
>>> *}*
>>>
>>
>> Please let me know if I missed any thing in here.
>> Thank you
>>
>>
>>
>>
>>
>> On Fri, Jul 18, 2014 at 6:34 PM, Alan Bell <alan.bell at libertus.co.uk>
>> wrote:
>>
>>> turns out that most of what to_html is processing is very repetitive, if
>>> it just populates an array as it goes along and then checks in that array
>>> it is a lot faster than doing htmlentities on the string every time.
>>>
>>> global $htmlcache;//store the stripped HTML as we go along, a lot of the
>>> time we are processing the same strings
>>> function to_html($string, $encode=true)
>>> {
>>> global $doconvert;
>>> global $default_charset;
>>> global $htmlcache;
>>> if($doconvert){
>>> if(isset($htmlcache[$string])){
>>> return $htmlcache[$string];
>>> }else{
>>> $clean= htmlentities($string, ENT_QUOTES,
>>> $default_charset);//we don't care if it is a string or not, faster not to
>>> care
>>> $htmlcache[$string]=$clean;
>>> return $clean;
>>> }
>>> }else{
>>> return $string;
>>> }
>>>
>>>
>>> }
>>>
>>> _______________________________________________
>>> http://www.vtiger.com/
>>>
>>
>>
>>
>> --
>> Regards,
>> Siva
>> Vtiger
>>
>> _______________________________________________
>> http://www.vtiger.com/
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.vtigercrm.com/pipermail/vtigercrm-developers/attachments/20151006/741932dd/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: wegring.png
Type: image/png
Size: 161549 bytes
Desc: not available
URL: <http://lists.vtigercrm.com/pipermail/vtigercrm-developers/attachments/20151006/741932dd/attachment-0001.png>
More information about the vtigercrm-developers
mailing list