54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @license
 | 
						|
 * Copyright Google Inc. All Rights Reserved.
 | 
						|
 *
 | 
						|
 * Use of this source code is governed by an MIT-style license that can be
 | 
						|
 * found in the LICENSE file at https://angular.io/license
 | 
						|
 */
 | 
						|
const events = require('events');
 | 
						|
const EventEmitter = events.EventEmitter;
 | 
						|
require('../../dist/zone-node');
 | 
						|
 | 
						|
const emitters = [];
 | 
						|
const callbacks = [];
 | 
						|
const size = 100000;
 | 
						|
for (let i = 0; i < size; i++) {
 | 
						|
  const emitter = new EventEmitter();
 | 
						|
  const callback = (function(i) {
 | 
						|
    return function() {
 | 
						|
      console.log(i);
 | 
						|
    };
 | 
						|
  })(i);
 | 
						|
  emitters[i] = emitter;
 | 
						|
  callbacks[i] = callback;
 | 
						|
}
 | 
						|
 | 
						|
function addRemoveCallback(reuse, useZone) {
 | 
						|
  const start = new Date();
 | 
						|
  let callback = callbacks[0];
 | 
						|
  for (let i = 0; i < size; i++) {
 | 
						|
    const emitter = emitters[i];
 | 
						|
    if (!reuse) callback = callbacks[i];
 | 
						|
    if (useZone)
 | 
						|
      emitter.on('msg', callback);
 | 
						|
    else
 | 
						|
      emitter.__zone_symbol__addListener('msg', callback);
 | 
						|
  }
 | 
						|
 | 
						|
  for (let i = 0; i < size; i++) {
 | 
						|
    const emitter = emitters[i];
 | 
						|
    if (!reuse) callback = callbacks[i];
 | 
						|
    if (useZone)
 | 
						|
      emitter.removeListener('msg', callback);
 | 
						|
    else
 | 
						|
      emitter.__zone_symbol__removeListener('msg', callback);
 | 
						|
  }
 | 
						|
  const end = new Date();
 | 
						|
  console.log(useZone ? 'use zone' : 'native', reuse ? 'reuse' : 'new');
 | 
						|
  console.log('Execution time: %dms', end - start);
 | 
						|
}
 | 
						|
 | 
						|
addRemoveCallback(false, false);
 | 
						|
addRemoveCallback(false, true);
 | 
						|
addRemoveCallback(true, false);
 | 
						|
addRemoveCallback(true, true); |