lastNumber (v2)

Revision 2 of this benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
nomal
var getLastNumber = function() {
 //정보은닉?? 이렇게 사용하는 건지 모르겠네요..다른 곳에서 접근 할 필요 없는 값이라고 생각해서..
 var item = [],
     arrayHundred = [],
     cnt = 0;
 return {
  init: function() {
   this.makeArrayHundred();
   this.setRandomInput();
  },
  makeArrayHundred: function() {
   for (var i = 0; i < 100; i++) {
    arrayHundred[i] = i;
   }
  },
  setRandomInput: function() {
   if (cnt === 99) {
    //item에 undefined를 지우기 위해..ㅠ
    for (var i = 0; i < item.length; i++) {
     typeof item[i] === 'undefined' && item.splice(i, 1);
    }
    //arrayHudred에 undefined값이 아닌것을 alert하기위해...
    for (var j = 0; j < arrayHundred.length; j++) {
     typeof arrayHundred[j] !== 'undefined' && alert(arrayHundred[j]);
    }
    return;
   }

   var randomNumber = Math.floor(Math.random() * 100);
   if (arrayHundred[randomNumber] === randomNumber && arrayHundred[randomNumber] !== 'undefined') {
    //배열에 랜덤번째 요소가 있고 udefined가 아니면 item 램던번째에 할당하고
    item[randomNumber] = arrayHundred[randomNumber];
    //배열에 랜덤번쨰를 delete해서 undefined로..
    delete arrayHundred[randomNumber];
    //배열에 undefined가 아닌것을 찾는게 매번 for문을 돌아야하는것 같아서 카운트를 설정...
    cnt++;
   }
   return this.setRandomInput();
  }
 }
}();
getLastNumber.init();​
ready
oojs
// OO - Class - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed)
// Based on http://ejohn.org/blog/simple-javascript-inheritance/
// which is based on implementations by Prototype / base2
;
(function() {
 var global = this,
     initialize = true
     
     var referencesSuper = /xyz/.test(function() {
  xyz
 }) ? /\b__super__\b/ : /.*/

 /**
  * Shortcut for Class.extend()
  *
  * @param  {hash} props
  * @return {function}
  * @api public
  */

 Class = function(props) {
  if (this == global) return Class.extend(props)
 }

 // --- Version
 Class.version = '1.2.0'

 /**
  * Create a new class.
  *
  *   User = Class({
  *     init: function(name){
  *       this.name = name
  *     }
  *   })
  *
  * Classes may be subclassed using the .extend() method, and
  * the associated superclass method via this.__super__().
  *
  *   Admin = User.extend({
  *     init: function(name, password) {
  *       this.__super__(name)
  *       // or this.__super__.apply(this, arguments)
  *       this.password = password
  *     }
  *   })
  *
  * @param  {hash} props
  * @return {function}
  * @api public
  */

 Class.extend = function(props) {
  var __super__ = this.prototype

  initialize = false
  var prototype = new this
  initialize = true

  function Class() {
   if (initialize && this.init) this.init.apply(this, arguments)
  }

  function extend(props) {
   for (var key in props)
   if (props.hasOwnProperty(key)) Class[key] = props[key]
  }

  Class.include = function(props) {
   for (var name in props)
   if (name == 'include') if (props[name] instanceof Array) for (var i = 0, len = props[name].length; i < len; ++i) Class.include(props[name][i])
   else Class.include(props[name])
   else if (name == 'extend') if (props[name] instanceof Array) for (var i = 0, len = props[name].length; i < len; ++i) extend(props[name][i])
   else extend(props[name])
   else if (props.hasOwnProperty(name)) prototype[name] = typeof props[name] == 'function' && typeof __super__[name] == 'function' && referencesSuper.test(props[name]) ? (function(name, fn) {
    return function() {
     this.__super__ = __super__[name]
     return fn.apply(this, arguments)
    }
   })(name, props[name]) : props[name]
  }

  Class.include(props)
  Class.prototype = prototype
  Class.constructor = Class
  Class.extend = arguments.callee

  return Class
 }
})()



//변수 구성하는 클래스 만들고...
var newClass = Class({
 item: [],
 array: [],
 cnt: 0
});
//클래스 메서드 추가한 후
var newClassExtend = newClass.extend({
 makeArray: function(number) {
  for (var i = 0; i < number; i++) {
   this.array[i] = i;
  };
 },
 setRandomInput: function() {
  if (this.cnt === this.array.length - 1) return;

  var randomNumber = Math.floor(Math.random() * 100);
  if (this.array[randomNumber] === randomNumber && this.item[randomNumber] !== randomNumber) {
   this.item[randomNumber] = this.array[randomNumber];
   this.cnt++;
  }
  return this.setRandomInput();
 },
 getNumber: function() {
  for (var i = 0; i < this.array.length; i++) {
   if (this.array[i] !== this.item[i]) {
    alert(this.array[i]);
   }
  }
 }
});

//인스턴스해서 모두 가져다 씀...
var LastNumber = new newClassExtend();
LastNumber.makeArray(100);
LastNumber.setRandomInput();
LastNumber.getNumber();​
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.