benchmark.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /**
  2. * Module dependencies.
  3. */
  4. var uubench = require('uubench')
  5. , pug = require('../');
  6. var suite = new uubench.Suite({
  7. min: 200,
  8. result: function(name, stats){
  9. var persec = 1000 / stats.elapsed
  10. , ops = stats.iterations * persec;
  11. console.log('%s: %d', name, ops | 0);
  12. }
  13. });
  14. function setup(self) {
  15. var suffix = self ? ' (self)' : ''
  16. , options = { self: self };
  17. var str = 'html\n body\n h1 Title'
  18. , fn = pug.compile(str, options);
  19. suite.bench('tiny' + suffix, function(next){
  20. fn();
  21. next();
  22. });
  23. str = '\
  24. html\n\
  25. body\n\
  26. h1 Title\n\
  27. ul#menu\n\
  28. li: a(href="#") Home\n\
  29. li: a(href="#") About Us\n\
  30. li: a(href="#") Store\n\
  31. li: a(href="#") FAQ\n\
  32. li: a(href="#") Contact\n\
  33. ';
  34. var fn2 = pug.compile(str, options);
  35. suite.bench('small' + suffix, function(next){
  36. fn2();
  37. next();
  38. });
  39. str = '\
  40. html\n\
  41. body\n\
  42. h1 #{title}\n\
  43. ul#menu\n\
  44. - each link in links\r\n\
  45. li: a(href="#")= link\r\n\
  46. ';
  47. if (self) {
  48. str = '\
  49. html\n\
  50. body\n\
  51. h1 #{self.title}\n\
  52. ul#menu\n\
  53. - each link in self.links\r\n\
  54. li: a(href="#")= link\r\n\
  55. ';
  56. }
  57. var fn3 = pug.compile(str, options);
  58. suite.bench('small locals' + suffix, function(next){
  59. fn3({ title: 'Title', links: ['Home', 'About Us', 'Store', 'FAQ', 'Contact'] });
  60. next();
  61. });
  62. str = '\
  63. html\n\
  64. body\n\
  65. h1 Title\n\
  66. ul#menu\n\
  67. li: a(href="#") Home\n\
  68. li: a(href="#") About Us\n\
  69. li: a(href="#") Store\n\
  70. li: a(href="#") FAQ\n\
  71. li: a(href="#") Contact\n\
  72. ';
  73. str = Array(30).join(str);
  74. var fn4 = pug.compile(str, options);
  75. suite.bench('medium' + suffix, function(next){
  76. fn4();
  77. next();
  78. });
  79. str = '\
  80. html\n\
  81. body\n\
  82. h1 Title\n\
  83. ul#menu\n\
  84. li: a(href="#") Home\n\
  85. li: a(href="#") About Us\n\
  86. li: a(href="#") Store\n\
  87. li: a(href="#") FAQ\n\
  88. li: a(href="#") Contact\n\
  89. ';
  90. str = Array(100).join(str);
  91. var fn5 = pug.compile(str, options);
  92. suite.bench('large' + suffix, function(next){
  93. fn5();
  94. next();
  95. });
  96. }
  97. setup();
  98. setup(true);
  99. suite.run();