Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

each micro optimization testing

  • Loading branch information...
commit b28777391020635e396efff39a2cd1de37cdbafd 1 parent 36777bb
Shea Frederick authored
26 examples/each/each-override.html
... ... @@ -0,0 +1,26 @@
  1 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2 +<html>
  3 +<head>
  4 +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5 + <title>Hello World Window Example Override</title>
  6 + <link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" />
  7 +
  8 + <!-- GC -->
  9 + <!-- LIBS -->
  10 + <script type="text/javascript" src="../../adapter/ext/ext-base-debug.js"></script>
  11 + <!-- ENDLIBS -->
  12 +
  13 + <script type="text/javascript" src="../../ext-all-debug.js"></script>
  14 +
  15 + <script language="javascript" src="../../src/Ext.Override.Ext.each.js"></script>
  16 +
  17 + <script language="javascript" src="each-override.js"></script>
  18 +
  19 +</head>
  20 +<body>
  21 +
  22 + <div id="grid-example"></div>
  23 +
  24 +</div>
  25 +</body>
  26 +</html>
105 examples/each/each-override.js
... ... @@ -0,0 +1,105 @@
  1 +Ext.onReady(function(){
  2 + var start = new Date();
  3 + // NOTE: This is an example showing simple state management. During development,
  4 + // it is generally best to disable state management as dynamically-generated ids
  5 + // can change across page loads, leading to unpredictable results. The developer
  6 + // should ensure that stable state ids are set for stateful components in real apps.
  7 + Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
  8 +
  9 + // sample static data for the store
  10 + var myData = [
  11 + ['3m Co',71.72,0.02,0.03,'9/1 12:00am'],
  12 + ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],
  13 + ['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'],
  14 + ['American Express Company',52.55,0.01,0.02,'9/1 12:00am'],
  15 + ['American International Group, Inc.',64.13,0.31,0.49,'9/1 12:00am'],
  16 + ['AT&T Inc.',31.61,-0.48,-1.54,'9/1 12:00am'],
  17 + ['Boeing Co.',75.43,0.53,0.71,'9/1 12:00am'],
  18 + ['Caterpillar Inc.',67.27,0.92,1.39,'9/1 12:00am'],
  19 + ['Citigroup, Inc.',49.37,0.02,0.04,'9/1 12:00am'],
  20 + ['E.I. du Pont de Nemours and Company',40.48,0.51,1.28,'9/1 12:00am'],
  21 + ['Exxon Mobil Corp',68.1,-0.43,-0.64,'9/1 12:00am'],
  22 + ['General Electric Company',34.14,-0.08,-0.23,'9/1 12:00am'],
  23 + ['General Motors Corporation',30.27,1.09,3.74,'9/1 12:00am'],
  24 + ['Hewlett-Packard Co.',36.53,-0.03,-0.08,'9/1 12:00am'],
  25 + ['Honeywell Intl Inc',38.77,0.05,0.13,'9/1 12:00am'],
  26 + ['Intel Corporation',19.88,0.31,1.58,'9/1 12:00am'],
  27 + ['International Business Machines',81.41,0.44,0.54,'9/1 12:00am'],
  28 + ['Johnson & Johnson',64.72,0.06,0.09,'9/1 12:00am'],
  29 + ['JP Morgan & Chase & Co',45.73,0.07,0.15,'9/1 12:00am'],
  30 + ['McDonald\'s Corporation',36.76,0.86,2.40,'9/1 12:00am'],
  31 + ['Merck & Co., Inc.',40.96,0.41,1.01,'9/1 12:00am'],
  32 + ['Microsoft Corporation',25.84,0.14,0.54,'9/1 12:00am'],
  33 + ['Pfizer Inc',27.96,0.4,1.45,'9/1 12:00am'],
  34 + ['The Coca-Cola Company',45.07,0.26,0.58,'9/1 12:00am'],
  35 + ['The Home Depot, Inc.',34.64,0.35,1.02,'9/1 12:00am'],
  36 + ['The Procter & Gamble Company',61.91,0.01,0.02,'9/1 12:00am'],
  37 + ['United Technologies Corporation',63.26,0.55,0.88,'9/1 12:00am'],
  38 + ['Verizon Communications',35.57,0.39,1.11,'9/1 12:00am'],
  39 + ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am']
  40 + ];
  41 +
  42 + /**
  43 + * Custom function used for column renderer
  44 + * @param {Object} val
  45 + */
  46 + function change(val){
  47 + if(val > 0){
  48 + return '<span style="color:green;">' + val + '</span>';
  49 + }else if(val < 0){
  50 + return '<span style="color:red;">' + val + '</span>';
  51 + }
  52 + return val;
  53 + }
  54 +
  55 + /**
  56 + * Custom function used for column renderer
  57 + * @param {Object} val
  58 + */
  59 + function pctChange(val){
  60 + if(val > 0){
  61 + return '<span style="color:green;">' + val + '%</span>';
  62 + }else if(val < 0){
  63 + return '<span style="color:red;">' + val + '%</span>';
  64 + }
  65 + return val;
  66 + }
  67 +
  68 + // create the data store
  69 + var store = new Ext.data.ArrayStore({
  70 + fields: [
  71 + {name: 'company'},
  72 + {name: 'price', type: 'float'},
  73 + {name: 'change', type: 'float'},
  74 + {name: 'pctChange', type: 'float'},
  75 + {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}
  76 + ]
  77 + });
  78 +
  79 + // manually load local data
  80 + store.loadData(myData);
  81 +
  82 + // create the Grid
  83 + var grid = new Ext.grid.GridPanel({
  84 + store: store,
  85 + columns: [
  86 + {id:'company',header: 'Company', width: 160, sortable: true, dataIndex: 'company'},
  87 + {header: 'Price', width: 75, sortable: true, renderer: 'usMoney', dataIndex: 'price'},
  88 + {header: 'Change', width: 75, sortable: true, renderer: change, dataIndex: 'change'},
  89 + {header: '% Change', width: 75, sortable: true, renderer: pctChange, dataIndex: 'pctChange'},
  90 + {header: 'Last Updated', width: 85, sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}
  91 + ],
  92 + stripeRows: true,
  93 + autoExpandColumn: 'company',
  94 + height: 350,
  95 + width: 600,
  96 + title: 'Array Grid',
  97 + // config options for stateful behavior
  98 + stateful: true,
  99 + stateId: 'grid'
  100 + });
  101 +
  102 + // render the grid to the specified div in the page
  103 + grid.render('grid-example');
  104 + (function(){alert(total);}).defer(300);
  105 +});
56 src/Ext.Override.Ext.each.js
... ... @@ -0,0 +1,56 @@
  1 +//--- BYPASS FOR WHEN SINGLE ITEM + SCOPE OPTIMIZATION ---
  2 +/*Ext.each = function(array, fn, scope){
  3 + if(Ext.isEmpty(array, true)){
  4 + return;
  5 + }
  6 + if (!Ext.isIterable(array) || Ext.isPrimitive(array)) {
  7 + if ((scope) ? fn.call(scope, array, 0, array) : fn(array, 0, array) === false) {
  8 + return 0;
  9 + }
  10 + } else {
  11 + for (var i = 0, len = array.length; i < len; i++) {
  12 + if ((scope) ? fn.call(scope, array[i], i, array) : fn(array[i], i, array) === false) {
  13 + return i;
  14 + }
  15 + }
  16 + }
  17 +};*/
  18 +
  19 +//--- SCOPE OPTIMIZATION ---
  20 +/*Ext.each = function(array, fn, scope){
  21 + if(Ext.isEmpty(array, true)){
  22 + return;
  23 + }
  24 + if(!Ext.isIterable(array) || Ext.isPrimitive(array)){
  25 + array = [array];
  26 + }
  27 + for(var i = 0, len = array.length; i < len; i++){
  28 + if((scope) ? fn.call(scope, array[i], i, array) : fn(array[i], i, array) === false){
  29 + return i;
  30 + }
  31 + }
  32 +};*/
  33 +
  34 +Ext.eachFn = function(array, fn, scope){
  35 + if (Ext.isEmpty(array, true)) {
  36 + return;
  37 + }
  38 + if (!Ext.isIterable(array) || Ext.isPrimitive(array)) {
  39 + array = [array];
  40 + }
  41 + for (var i = 0, len = array.length; i < len; i++) {
  42 + if (fn.call(scope || array[i], array[i], i, array) === false) {
  43 + return i;
  44 + }
  45 + }
  46 +};
  47 +
  48 +var total = 0, measure = function(){
  49 + return function(array, fn, scope){
  50 + var start = new Date();
  51 + Ext.eachFn(array, fn, scope);
  52 + total += (new Date() - start);
  53 + };
  54 +};
  55 +
  56 +Ext.each = measure();

0 comments on commit b287773

Please sign in to comment.
Something went wrong with that request. Please try again.