简体   繁体   English

帮助我理解脚本性能慢的原因

[英]Assist me with understanding the reason of slow script performance

I repeat usual script for placeholder (jPlaceholder.js). 我重复占位符(jPlaceholder.js)的常用脚本。

The reason is slow reading speed(~150 000\\1000ms) and big file size (5.8kb); 原因是读取速度慢(〜150 000 \\ 1000ms)和大文件大小(5.8kb); The script below has a much faster reading speed (~1 950 000\\1000ms) and is more lightweight(1.8kb). 下面的脚本具有更快的读取速度(~1 950 000 \\ 1000ms),并且更轻量级(1.8kb)。

The problem is that the first one runs ~32 000\\1000ms, but my(script below) 525\\1000ms only. 问题是第一个运行〜32 000 \\ 1000ms,但my(下面的脚本)仅525 \\ 1000ms。

Please help me to understand why, and how to make it faster. 请帮助我理解为什么,以及如何使它更快。

  $.fn.placehold = function (option) { var opt = { wrapperClass: 'jvPlacehold', wrapperPadding: 0, wrapperMargin: 0, wrapperTop: 0, wrapperLeft: 0, counterClass: 'jvPhCounter', labelClass: 'jvPhLabel', labelPadding: '0 5px', labelColor: '#a9a9a9', labelOpacitySpeed: 300, holderDataName: 'placeholder', focusSpeed: 300, blurSpeed: 300 }; opt = $.extend({}, opt, option); var $el = $(this), $wrapper = $('<div>', { class: opt.wrapperClass, group: 'search', css: { overflow: 'hidden', background: $el.css('background'), width: $el.outerWidth(), height: $el.outerHeight(), padding: opt.wrapperPadding, margin: opt.wrapperMargin, top: opt.wrapperTop, left: opt.wrapperLeft, float: opt.wrapperFloat } }), $counter = $('<span>', { class: opt.counterClass, css: { display: 'none' } }), $label = $('<span>', { class: opt.labelClass, text: $el.data(opt.holderDataName), css: { padding: opt.labelPadding, color: opt.labelColor } }); $el.css({ position: 'absolute', background: 'none', left: 0 }); $el.after($wrapper.append($counter, $label)).appendTo($wrapper); $label.css('top', Math.abs($el.innerHeight() - $label.height()) / 2); $el.keyup(function () { if ($counter.text($el.val().replace(/\\s/gi, '❙')).outerWidth() >= parseInt($label.css('left'))) $label.stop().animate({ opacity: 0 }, opt.labelOpacitySpeeed); else $label.stop().animate({ opacity: 1 }, opt.labelOpacitySpeeed); }).focus(function () { $label.stop().animate({ left: ($el.innerWidth() - $label.outerWidth()) }, opt.focusSpeed); }).blur(function () { if (!$el.val().length) $label.stop().animate({ left: 0 }, opt.blurSpeed); }); }; $('#search').placehold(); 
 div, span { position:relative; } input { padding:2px 5px; border:1px solid #a9a9a9; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> <input type="text" id="search" data-placeholder="Search"> 

var tmp = new Date().getTime();

Write above, then use: 在上面写,然后使用:

console.log(new Date().getTime() - tmp);

between codes to see how much time each part of code takes. 在代码之间查看代码的每个部分需要多长时间。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM