277 lines
6.7 KiB
HTML
277 lines
6.7 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>Performance testcase</title>
|
||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||
|
<script src="../js/tinymce/tinymce.dev.js"></script>
|
||
|
<script>
|
||
|
var editor;
|
||
|
|
||
|
var performanceTests = {
|
||
|
'tinymce.Editor.getContent (text blocks)': {
|
||
|
setup: function() {
|
||
|
var html;
|
||
|
|
||
|
if (!this.html) {
|
||
|
html = [];
|
||
|
for (var i = 0; i < 400; i++) {
|
||
|
html.push('<p id="x" title="my title abc" class="myclass">');
|
||
|
|
||
|
for (var a = 0; a < 100; a++)
|
||
|
html.push('word' + i + ',' + a + ' abc');
|
||
|
|
||
|
html.push('</p>');
|
||
|
}
|
||
|
|
||
|
this.html = html.join('');
|
||
|
}
|
||
|
|
||
|
editor.setContent(this.html);
|
||
|
},
|
||
|
|
||
|
run: function() {
|
||
|
return editor.getContent();
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.Editor.getContent (text blocks with entities)': {
|
||
|
setup: function() {
|
||
|
var html;
|
||
|
|
||
|
if (!this.html) {
|
||
|
html = [];
|
||
|
for (var i = 0; i < 400; i++) {
|
||
|
html.push('<p id="x" title="my title åäö" class="myclass">');
|
||
|
|
||
|
for (var a = 0; a < 100; a++)
|
||
|
html.push('word' + i + ',' + a + ' åäö');
|
||
|
|
||
|
html.push('</p>');
|
||
|
}
|
||
|
|
||
|
this.html = html = html.join('');
|
||
|
} else
|
||
|
html = this.html;
|
||
|
|
||
|
editor.setContent(html);
|
||
|
},
|
||
|
|
||
|
run: function() {
|
||
|
return editor.getContent();
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.html.DomParser (validate: false)': {
|
||
|
setup: function() {
|
||
|
var html;
|
||
|
|
||
|
if (!this.html) {
|
||
|
html = [];
|
||
|
for (var i = 0; i < 400; i++) {
|
||
|
html.push('<p id="x" title="my title åäö" class="myclass">');
|
||
|
html.push('<strong>bold</strong><em>italic</em>');
|
||
|
|
||
|
for (var a = 0; a < 100; a++)
|
||
|
html.push('word' + i + ',' + a + ' åäö');
|
||
|
|
||
|
html.push('</p>');
|
||
|
}
|
||
|
|
||
|
this.html = html = html.join('');
|
||
|
}
|
||
|
|
||
|
editor.setContent(this.html);
|
||
|
},
|
||
|
|
||
|
run: function() {
|
||
|
return new tinymce.html.DomParser({validate: false}).parse(this.html);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.html.DomParser (validate: true)': {
|
||
|
setup: function() {
|
||
|
var html;
|
||
|
|
||
|
if (!this.html) {
|
||
|
html = [];
|
||
|
for (var i = 0; i < 400; i++) {
|
||
|
html.push('<p id="x" title="my title åäö" class="myclass">');
|
||
|
html.push('<strong>bold</strong><em>italic</em>');
|
||
|
|
||
|
for (var a = 0; a < 100; a++)
|
||
|
html.push('word' + i + ',' + a + ' åäö');
|
||
|
|
||
|
html.push('</p>');
|
||
|
}
|
||
|
|
||
|
this.html = html = html.join('');
|
||
|
}
|
||
|
|
||
|
editor.setContent(this.html);
|
||
|
},
|
||
|
|
||
|
run: function() {
|
||
|
return new tinymce.html.DomParser().parse(this.html);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.html.SaxParser (validate: false)': {
|
||
|
setup: function() {
|
||
|
var html;
|
||
|
|
||
|
if (!this.html) {
|
||
|
html = [];
|
||
|
for (var i = 0; i < 400; i++) {
|
||
|
html.push('<p id="x" title="my title åäö" class="myclass">');
|
||
|
|
||
|
for (var a = 0; a < 100; a++)
|
||
|
html.push('word' + i + ',' + a + ' åäö');
|
||
|
|
||
|
html.push('</p>');
|
||
|
}
|
||
|
|
||
|
this.html = html = html.join('');
|
||
|
}
|
||
|
|
||
|
editor.setContent(this.html);
|
||
|
},
|
||
|
|
||
|
run: function() {
|
||
|
return new tinymce.html.SaxParser({validate: false}).parse(this.html);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.html.SaxParser (validate: true)': {
|
||
|
setup: function() {
|
||
|
var html;
|
||
|
|
||
|
if (!this.html) {
|
||
|
html = [];
|
||
|
for (var i = 0; i < 400; i++) {
|
||
|
html.push('<p id="x" title="my title åäö" class="myclass">');
|
||
|
|
||
|
for (var a = 0; a < 100; a++)
|
||
|
html.push('word' + i + ',' + a + ' åäö');
|
||
|
|
||
|
html.push('</p>');
|
||
|
}
|
||
|
|
||
|
this.html = html = html.join('');
|
||
|
}
|
||
|
|
||
|
editor.setContent(this.html);
|
||
|
},
|
||
|
|
||
|
run: function() {
|
||
|
return new tinymce.html.SaxParser().parse(this.html);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.html.Entities.decode': {
|
||
|
run: function() {
|
||
|
for (var i = 0; i < 10000; i++) {
|
||
|
tinymce.html.Entities.decode('textåä¨<>&text');
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.util.URI (absolute/relative)': {
|
||
|
run: function() {
|
||
|
for (var i = 0; i < 200; i++) {
|
||
|
new tinymce.util.URI('http://www.site.com/dir1/dir2/file.html').toRelative('http://www.site.com/dir1/dir3/file.html');
|
||
|
new tinymce.util.URI('http://www.site.com/dir1/dir2/file.html').toRelative('http://www.site.com/dir3/dir4/file.html');
|
||
|
new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('../dir3');
|
||
|
new tinymce.util.URI('http://www.site.com/dir1/dir2/').toAbsolute('../dir3', 1);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.dom.DOMUtils.parseStyle/serializeStyle': {
|
||
|
run: function() {
|
||
|
for (var i = 0; i < 1000; i++) {
|
||
|
tinymce.DOM.serializeStyle(
|
||
|
tinymce.DOM.parseStyle('border:1px solid red; background-image:url(some/dir/file.gif); font-size: 15px; color:rgb(1,2,3)')
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'tinymce.html.Styles': {
|
||
|
setup: function() {
|
||
|
this.styles = new tinymce.html.Styles({
|
||
|
url_converter : function(url) {
|
||
|
return '|' + url + '|';
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
run: function() {
|
||
|
for (var i = 0; i < 1000; i++) {
|
||
|
this.styles.serialize(this.styles.parse("key:rgb(1,2,3) url(a) url('b') url(\"c\") \"st\\\"r'st'r\" 'st\\'r\"str\"str'"));
|
||
|
this.styles.serialize(this.styles.parse("key:rgb(1,2,3) rgb(1,2,3) rgb(1,2,3) rgb(1,2,3)"));
|
||
|
this.styles.serialize(this.styles.parse("font-size: 10px; font-weight: bold; font-family: Arial"));
|
||
|
|
||
|
//tinymce.DOM.serializeStyle(tinymce.DOM.parseStyle("key:rgb(1,2,3) url(a) url('b') url(\"c\") \"st\\\"r'st'r\" 'st\\'r\"str\"str'"));
|
||
|
//tinymce.DOM.serializeStyle(tinymce.DOM.parseStyle("key:rgb(1,2,3) rgb(1,2,3) rgb(1,2,3) rgb(1,2,3)"));
|
||
|
//tinymce.DOM.serializeStyle(tinymce.DOM.parseStyle("font-size: 10px; font-weight: bold; font-family: Arial"));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
tinymce.init({
|
||
|
mode : "exact",
|
||
|
elements : "elm1",
|
||
|
add_unload_trigger : false,
|
||
|
init_instance_callback : function(ed) {
|
||
|
var count = 0;
|
||
|
|
||
|
editor = ed;
|
||
|
|
||
|
tinymce.each(performanceTests, function(test, title) {
|
||
|
tinymce.DOM.add('tests', 'li', null, '<a id="test_' + (++count) + '" href="#">' + title + '</a>');
|
||
|
tinymce.DOM.bind('test_' + count, 'click', function(e) {
|
||
|
var count = 0, numberOfRuns;
|
||
|
|
||
|
numberOfRuns = parseInt(document.getElementById('runs').value);
|
||
|
|
||
|
e.preventDefault();
|
||
|
e.target.innerHTML = title + ' (Running)';
|
||
|
|
||
|
function runTest() {
|
||
|
var i, time, times = [], sum = 0;
|
||
|
|
||
|
if (test.setup)
|
||
|
test.setup();
|
||
|
|
||
|
time = +new Date;
|
||
|
test.run();
|
||
|
time = (+new Date) - time;
|
||
|
times.push(time);
|
||
|
|
||
|
if (count++ >= numberOfRuns) {
|
||
|
for (i = 0; i < times.length; i++)
|
||
|
sum += times[i];
|
||
|
|
||
|
e.target.innerHTML = title + ' (Avarage: ' + (sum / times.length) + 'ms)';
|
||
|
} else {
|
||
|
e.target.innerHTML = title + ' (Runned ' + count + " of " + numberOfRuns + ", " + time + "ms)";
|
||
|
setTimeout(runTest, 10);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
setTimeout(runTest, 10);
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
</script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<h1>Performance tests</h1>
|
||
|
<p style="margin-left: 10px">Runs: <input id="runs" type="text" value="10" size="3" /></p>
|
||
|
<ul id="tests"></ul>
|
||
|
<textarea id="elm1"></textarea>
|
||
|
</body>
|
||
|
</html>
|