Advertisement
Guest User

Untitled

a guest
Nov 25th, 2014
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.94 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace JintTest
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             var _engine = new Jint.Engine() ;
  15.  
  16.             _engine.SetValue("console", new { log = (Action<object>)Console.WriteLine });
  17.             const string source = @"
  18. var sTime = new Date();
  19. var startTest = function(){sTime = new Date();};
  20. var test = function(name, fn){
  21. var tStartTime = new Date();
  22. fn();
  23. var tEndDate = new Date();
  24. console.log('Test: ' + name + ': ' + (tEndDate.getTime() - tStartTime.getTime()) + ' ms');
  25. };
  26. var eTime = new Date();
  27. var endTest = function(){eTime = new Date(); console.log(eTime.getTime() - sTime.getTime());};
  28. var prep = function(fn){ fn(); };
  29.  
  30. var ffn = function(){ startTest('dromaeo-object-string', 'ef8605c3');
  31.  
  32. // Try to force real results
  33. var ret;
  34. var num = 80000;
  35.  
  36. // TESTS: String concatenation
  37.  
  38.     test( 'Concat String', function(){
  39.         var str = '';
  40.         for ( var i = 0; i < num; i++ )
  41.             str += 'a';
  42.         ret = str;
  43.     });
  44.  
  45.     test( 'Concat String Object', function(){
  46.         var str = new String();
  47.         for ( var i = 0; i < num; i++ )
  48.             str += 'a';
  49.         ret = str;
  50.     });
  51.  
  52.     test( 'Concat String from charCode', function(){
  53.         var str = '';
  54.         for ( var i = 0; i < num / 2; i++ )
  55.             str += String.fromCharCode(97);
  56.         ret = str;
  57.     });
  58.  
  59.     test( 'Array String Join', function(){
  60.         var str = [];
  61.         for ( var i = 0; i < num / 2; i++ )
  62.             str.push('a');
  63.         ret = str.join('');
  64.     });
  65.  
  66. var ostr = [], tmp, tmp2, num = 5000, tmpstr;
  67.  
  68. for ( var i = 0; i < 16384; i++ )
  69.     ostr.push( String.fromCharCode( (25 * Math.random()) + 97 ) );
  70.  
  71. ostr = ostr.join('');
  72. ostr += ostr;
  73. ostr += ostr;
  74.  
  75. var str;
  76. var i = 52288;
  77.  
  78.     prep(function(){
  79.         str = new String(ostr);
  80.     });
  81.  
  82.     // TESTS: split
  83.     test( 'String Split', function(){
  84.         ret = str.split('');
  85.     });
  86.  
  87.     prep(function(){
  88.         tmpstr = str;
  89.         tmpstr += tmpstr;
  90.         tmpstr += tmpstr;
  91.         tmpstr += tmpstr;
  92.         tmpstr += tmpstr;
  93.     });
  94.  
  95.     test( 'String Split on Char', function(){
  96.         ret = tmpstr.split('a');
  97.     });
  98.  
  99.     prep(function(){
  100.         str += str;
  101.     });
  102.  
  103.     // TESTS: characters
  104.  
  105.     test( 'charAt', function(){
  106.         for ( var j = 0; j < num; j++ ) {
  107.             ret = str.charAt(0);
  108.             ret = str.charAt(str.length - 1);
  109.             ret = str.charAt( 15000 );
  110.             ret = str.charAt( 12000 );
  111.         }
  112.     });
  113.  
  114.     test( '[Number]', function(){
  115.         for ( var j = 0; j < num; j++ ) {
  116.             ret = str[0];
  117.             ret = str[str.length - 1];
  118.             ret = str[ 15000 ];
  119.             ret = str[ 10000 ];
  120.             ret = str[ 5000 ];
  121.         }
  122.     });
  123.  
  124.     test( 'charCodeAt', function(){
  125.         for ( var j = 0; j < num; j++ ) {
  126.             ret = str.charCodeAt(0);
  127.             ret = str.charCodeAt(str.length - 1);
  128.             ret = str.charCodeAt( 15000 );
  129.             ret = str.charCodeAt( 10000 );
  130.             ret = str.charCodeAt( 5000 );
  131.         }
  132.     });
  133.  
  134.     // TESTS: indexOf
  135.  
  136.     test( 'indexOf', function(){
  137.         for ( var j = 0; j < num; j++ ) {
  138.             ret = str.indexOf('a');
  139.             ret = str.indexOf('b');
  140.             ret = str.indexOf('c');
  141.             ret = str.indexOf('d');
  142.         }
  143.     });
  144.  
  145.     test( 'lastIndexOf', function(){
  146.         for ( var j = 0; j < num; j++ ) {
  147.             ret = str.lastIndexOf('a');
  148.             ret = str.lastIndexOf('b');
  149.             ret = str.lastIndexOf('c');
  150.             ret = str.lastIndexOf('d');
  151.         }
  152.     });
  153.  
  154.     // TESTS: slice
  155.  
  156.     test( 'slice', function(){
  157.         for ( var j = 0; j < num; j++ ) {
  158.             ret = str.slice(0);
  159.             ret = str.slice(0,5);
  160.             ret = str.slice(-1);
  161.             ret = str.slice(-6,-1);
  162.             ret = str.slice( 15000, 15005 );
  163.             ret = str.slice( 12000, -1 );
  164.         }
  165.     });
  166.  
  167.     // TESTS: substr
  168.  
  169.     test( 'substr', function(){
  170.         for ( var j = 0; j < num; j++ ) {
  171.             ret = str.substr(0);
  172.             ret = str.substr(0,5);
  173.             ret = str.substr(-1);
  174.             ret = str.substr(-6,1);
  175.             ret = str.substr( 15000, 5 );
  176.             ret = str.substr( 12000, 5 );
  177.         }
  178.     });
  179.  
  180.     // TESTS: substring
  181.  
  182.     test( 'substring', function(){
  183.         for ( var j = 0; j < num; j++ ) {
  184.             ret = str.substring(0);
  185.             ret = str.substring(0,5);
  186.             ret = str.substring(-1);
  187.             ret = str.substring(-6,-1);
  188.             ret = str.substring( 15000, 15005 );
  189.             ret = str.substring( 12000, -1 );
  190.         }
  191.     });
  192.  
  193.     // TESTS: toLower/UpperCase
  194.  
  195.     test( 'toLowerCase', function(){
  196.         for ( var j = 0; j < num / 1000; j++ ) {
  197.             ret = str.toLowerCase();
  198.         }
  199.     });
  200.  
  201.     test( 'toUpperCase', function(){
  202.         for ( var j = 0; j < num / 1000; j++ ) {
  203.             ret = str.toUpperCase();
  204.         }
  205.     });
  206.  
  207.     // TESTS: comparing
  208.     prep(function(){
  209.         tmp = str;
  210.         tmp2 = str;
  211.     });
  212.  
  213.     test( 'comparing', function(){
  214.         tmp = 'a' + tmp + 'a';
  215.         tmp2 = 'a' + tmp2 + 'a';
  216.         for ( var j = 0; j < num / 1000; j++ ) {
  217.             ret = tmp == tmp2;
  218.             ret = tmp < tmp2;
  219.             ret = tmp > tmp2;
  220.         }
  221.     });
  222.  
  223. endTest(); };
  224.  
  225. ffn();
  226. ";
  227.             _engine.Execute(source);
  228.             _engine.Invoke("ffn");
  229.             _engine.Invoke("ffn");
  230.             _engine.Invoke("ffn");
  231.             _engine.Invoke("ffn");
  232.             _engine.Invoke("ffn");
  233.             Console.Read();
  234.         }
  235.     }
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement