Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace JintTest
- {
- class Program
- {
- static void Main(string[] args)
- {
- var _engine = new Jint.Engine() ;
- _engine.SetValue("console", new { log = (Action<object>)Console.WriteLine });
- const string source = @"
- var sTime = new Date();
- var startTest = function(){sTime = new Date();};
- var test = function(name, fn){
- var tStartTime = new Date();
- fn();
- var tEndDate = new Date();
- console.log('Test: ' + name + ': ' + (tEndDate.getTime() - tStartTime.getTime()) + ' ms');
- };
- var eTime = new Date();
- var endTest = function(){eTime = new Date(); console.log(eTime.getTime() - sTime.getTime());};
- var prep = function(fn){ fn(); };
- var ffn = function(){ startTest('dromaeo-object-string', 'ef8605c3');
- // Try to force real results
- var ret;
- var num = 80000;
- // TESTS: String concatenation
- test( 'Concat String', function(){
- var str = '';
- for ( var i = 0; i < num; i++ )
- str += 'a';
- ret = str;
- });
- test( 'Concat String Object', function(){
- var str = new String();
- for ( var i = 0; i < num; i++ )
- str += 'a';
- ret = str;
- });
- test( 'Concat String from charCode', function(){
- var str = '';
- for ( var i = 0; i < num / 2; i++ )
- str += String.fromCharCode(97);
- ret = str;
- });
- test( 'Array String Join', function(){
- var str = [];
- for ( var i = 0; i < num / 2; i++ )
- str.push('a');
- ret = str.join('');
- });
- var ostr = [], tmp, tmp2, num = 5000, tmpstr;
- for ( var i = 0; i < 16384; i++ )
- ostr.push( String.fromCharCode( (25 * Math.random()) + 97 ) );
- ostr = ostr.join('');
- ostr += ostr;
- ostr += ostr;
- var str;
- var i = 52288;
- prep(function(){
- str = new String(ostr);
- });
- // TESTS: split
- test( 'String Split', function(){
- ret = str.split('');
- });
- prep(function(){
- tmpstr = str;
- tmpstr += tmpstr;
- tmpstr += tmpstr;
- tmpstr += tmpstr;
- tmpstr += tmpstr;
- });
- test( 'String Split on Char', function(){
- ret = tmpstr.split('a');
- });
- prep(function(){
- str += str;
- });
- // TESTS: characters
- test( 'charAt', function(){
- for ( var j = 0; j < num; j++ ) {
- ret = str.charAt(0);
- ret = str.charAt(str.length - 1);
- ret = str.charAt( 15000 );
- ret = str.charAt( 12000 );
- }
- });
- test( '[Number]', function(){
- for ( var j = 0; j < num; j++ ) {
- ret = str[0];
- ret = str[str.length - 1];
- ret = str[ 15000 ];
- ret = str[ 10000 ];
- ret = str[ 5000 ];
- }
- });
- test( 'charCodeAt', function(){
- for ( var j = 0; j < num; j++ ) {
- ret = str.charCodeAt(0);
- ret = str.charCodeAt(str.length - 1);
- ret = str.charCodeAt( 15000 );
- ret = str.charCodeAt( 10000 );
- ret = str.charCodeAt( 5000 );
- }
- });
- // TESTS: indexOf
- test( 'indexOf', function(){
- for ( var j = 0; j < num; j++ ) {
- ret = str.indexOf('a');
- ret = str.indexOf('b');
- ret = str.indexOf('c');
- ret = str.indexOf('d');
- }
- });
- test( 'lastIndexOf', function(){
- for ( var j = 0; j < num; j++ ) {
- ret = str.lastIndexOf('a');
- ret = str.lastIndexOf('b');
- ret = str.lastIndexOf('c');
- ret = str.lastIndexOf('d');
- }
- });
- // TESTS: slice
- test( 'slice', function(){
- for ( var j = 0; j < num; j++ ) {
- ret = str.slice(0);
- ret = str.slice(0,5);
- ret = str.slice(-1);
- ret = str.slice(-6,-1);
- ret = str.slice( 15000, 15005 );
- ret = str.slice( 12000, -1 );
- }
- });
- // TESTS: substr
- test( 'substr', function(){
- for ( var j = 0; j < num; j++ ) {
- ret = str.substr(0);
- ret = str.substr(0,5);
- ret = str.substr(-1);
- ret = str.substr(-6,1);
- ret = str.substr( 15000, 5 );
- ret = str.substr( 12000, 5 );
- }
- });
- // TESTS: substring
- test( 'substring', function(){
- for ( var j = 0; j < num; j++ ) {
- ret = str.substring(0);
- ret = str.substring(0,5);
- ret = str.substring(-1);
- ret = str.substring(-6,-1);
- ret = str.substring( 15000, 15005 );
- ret = str.substring( 12000, -1 );
- }
- });
- // TESTS: toLower/UpperCase
- test( 'toLowerCase', function(){
- for ( var j = 0; j < num / 1000; j++ ) {
- ret = str.toLowerCase();
- }
- });
- test( 'toUpperCase', function(){
- for ( var j = 0; j < num / 1000; j++ ) {
- ret = str.toUpperCase();
- }
- });
- // TESTS: comparing
- prep(function(){
- tmp = str;
- tmp2 = str;
- });
- test( 'comparing', function(){
- tmp = 'a' + tmp + 'a';
- tmp2 = 'a' + tmp2 + 'a';
- for ( var j = 0; j < num / 1000; j++ ) {
- ret = tmp == tmp2;
- ret = tmp < tmp2;
- ret = tmp > tmp2;
- }
- });
- endTest(); };
- ffn();
- ";
- _engine.Execute(source);
- _engine.Invoke("ffn");
- _engine.Invoke("ffn");
- _engine.Invoke("ffn");
- _engine.Invoke("ffn");
- _engine.Invoke("ffn");
- Console.Read();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement