Advertisement
nponeccop

Untitled

Apr 2nd, 2012
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /******************************************************
  2. * Use different arLen and arOb1..arOb4 functions to see
  3. * how per-element memory overhead changes
  4. ******************************************************/
  5.  
  6. var seed = 1, m = 2147483648
  7.  
  8. function lcr()
  9. {
  10.     seed = (seed * 1103515245 + 12345) % m
  11.     return seed / m
  12. }
  13.  
  14. var rand = lcr // can be Math.random()
  15.  
  16. function rc()
  17. {
  18.     return String.fromCharCode(Math.floor(97 + rand() * 26))
  19. }
  20.  
  21. function key()
  22. {
  23.     var s = ""
  24.     for (var i = 0; i < 6; i++)
  25.     {
  26.         s += rc()
  27.     }
  28.     return s
  29. }
  30.    
  31. function float()
  32. {
  33.     return Math.round((Math.random() * 2 + 4) * 1000) / 1000
  34. }
  35.    
  36. function ob_uniq()
  37. {
  38.     var a = {}
  39.     for (var i = 0; i < 10; i++)
  40.     {
  41.         a[key()] = float()
  42.     }
  43.     return a
  44. }
  45.    
  46. var sameProp = ob_uniq()
  47.    
  48. function ob_same()
  49. {
  50.     seed = 123
  51.     return ob_uniq()
  52. }
  53.  
  54. var arLen
  55.    
  56. function arOb1()
  57. {
  58.     var a = new Array(arLen)
  59.     for (var i = 0; i < a.length; i++)
  60.     {
  61.         a[i] = ob_uniq()
  62.     }
  63.     return a
  64. }
  65.  
  66. function arOb2()
  67. {
  68.     var a = new Array(arLen)
  69.     for (var i = 0; i < a.length; i++)
  70.     {
  71.         a[i] = ob_same()
  72.     }
  73.     return a
  74. }
  75.    
  76. function arOb3()
  77. {
  78.     var o = ob_same()
  79.  
  80.     var a = new Array(arLen)
  81.     for (var i = 0; i < a.length; i++)
  82.     {
  83.         var oo = {}
  84.         for (var p in o)
  85.         {
  86.             oo[p] = float()
  87.         }
  88.         a[i] = oo
  89.     }
  90.     return a
  91. }
  92.        
  93. function arOb4()
  94. {
  95.     var o = ob_same()
  96.     var a = {}
  97.     for (var p in o)
  98.     {
  99.         a[p] = new Array(arLen)
  100.     }
  101.     for (var i = 0; i < arLen; i++)
  102.     {
  103.         for (var p in o)
  104.         {
  105.             a[p][i] = float()
  106.         }
  107.     }
  108.     return a
  109. }
  110.        
  111. function getAt(a, idx)
  112. {
  113.     if (a instanceof Array)
  114.     {
  115.         return a[idx]
  116.     }
  117.    
  118.     var element = {}
  119.     for (var p in a)
  120.     {
  121.         element[p] = a[p][idx]
  122.     }
  123.     return element
  124. }
  125.    
  126. function usage()
  127. {
  128.     return process.memoryUsage().heapUsed
  129. }
  130.    
  131. var u0 = usage()
  132. setInterval(function () { console.log(((usage() - u0) / arLen).toFixed(0)) }, 2000)
  133.  
  134. arLen = 100000 
  135. var a = arOb4()
  136. console.log(getAt(a, 2345))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement