Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html><head> <title>JS-Framkeworks Benchmark</title> <meta charset="UTF-8"> <link href="css/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/> <link rel="stylesheet" href="css/main.css"> <meta name="viewport" content="width=device-width, initial-scale=1"></head><body><div class="container"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">Choose a framework:</h3> </div> <div class="panel-body"> <ul class="nav nav-pills nav-stacked"> <li><a href="angular-v1.5.8"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> angular-v1.5.8</a></li> <li><a href="angular-v2.2.1"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> angular-v2.2.1</a></li> <li><a href="aurelia-v1.0.7/dist"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> aurelia-v1.0.7</a></li> <li><a href="binding.scala-v10.0.1/target/web/stage"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> binding.scala-v10.0.1</a></li> <li><a href="bobril-v4.49.2"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> bobril-v4.49.2</a></li> <li><a href="cyclejs-dom-v14.1.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> cyclejs-dom-v14.1.0</a></li> <li><a href="dio-v3.0.5"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> dio-v3.0.5</a></li> <li><a href="domvm-v1.2.10"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> domvm-v1.2.10</a></li> <li><a href="domvm-v2.0.0-beta"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> domvm-v2.0.0-beta</a></li> <li><a href="ember-v2.6.1/dist"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> ember-v2.6.1</a></li> <li><a href="ember-v2.10.0-beta.2/dist"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> ember-v2.10.0-beta.2</a></li> <li><a href="elm-v0.17.1"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> elm-v0.17.1</a></li> <li><a href="inferno-v1.0.0-beta9"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> inferno-v1.0.0-beta9</a></li> <li><a href="kivi-v1.0.0-rc2"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> kivi-v1.0.0-rc2</a></li> <li><a href="knockout-v3.4.1"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> knockout-v3.4.1</a></li> <li><a href="mithril-v0.2.5"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> mithril-v0.2.5</a></li> <li><a href="mithril-v1.0.0-alpha"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> mithril-v1.0.0-alpha</a></li> <li><a href="plastiq-v1.33.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> plastiq-v1.33.0</a></li> <li><a href="polymer-v1.7.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> polymer-v1.7.0</a></li> <li><a href="preact-v6.4.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> preact-v6.4.0</a></li> <li><a href="ractive-v0.8.5"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> ractive-v0.8.5</a></li> <li><a href="ractive-edge"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> ractive-edge</a></li> <li><a href="react-lite-v0.15.27"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> react-lite-v0.15.27</a></li> <li><a href="react-v15.4.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> react-v15.4.0</a></li> <li><a href="react-v15.4.0-mobX-v2.6.3"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> react-v15.4.0-mobX-v2.6.3</a></li> <li><a href="react-v15.4.0-redux-v3.6.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> react-v15.4.0-redux-v3.6.0</a></li> <li><a href="riot-v2.6.7"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> riot-v2.6.7</a></li> <li><a href="simulacra-v1.5.5"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> simulacra-v1.5.5</a></li> <li><a href="tsers-v1.0.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> tsers-v1.0.0</a></li> <li><a href="vanillajs"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> vanillajs</a></li> <li><a href="vidom-v0.5.3"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> vidom-v0.5.3</a></li> <li><a href="vue-v2.1.3"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> vue-v2.1.3</a></li> </ul> </div> </div> <div class="panel panel-default"> <div class="panel-body"> <ul class="nav nav-pills nav-stacked"> <li><a href="webdriver-ts/table.html"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> Table Report</a></li> </ul> </div> </div></div></body></html>
<!DOCTYPE html><html><head> <title>JS-Framkeworks Benchmark</title> <meta charset="UTF-8"> <link href="css/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/> <link rel="stylesheet" href="css/main.css"> <meta name="viewport" content="width=device-width, initial-scale=1"></head><body><div class="container"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">Choose a framework:</h3> </div> <div class="panel-body"> <ul class="nav nav-pills nav-stacked"> <li><a href="angular-v1.5.8"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> angular-v1.5.8</a></li> <li><a href="angular-v2.2.1"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> angular-v2.2.1</a></li> <li><a href="aurelia-v1.0.7/dist"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> aurelia-v1.0.7</a></li> <li><a href="binding.scala-v10.0.1/target/web/stage"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> binding.scala-v10.0.1</a></li> <li><a href="bobril-v4.49.2"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> bobril-v4.49.2</a></li> <li><a href="cyclejs-dom-v14.1.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> cyclejs-dom-v14.1.0</a></li> <li><a href="dio-v3.0.5"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> dio-v3.0.5</a></li> <li><a href="domvm-v1.2.10"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> domvm-v1.2.10</a></li> <li><a href="domvm-v2.0.0-beta"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> domvm-v2.0.0-beta</a></li> <li><a href="ember-v2.6.1/dist"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> ember-v2.6.1</a></li> <li><a href="ember-v2.10.0-beta.2/dist"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> ember-v2.10.0-beta.2</a></li> <li><a href="elm-v0.17.1"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> elm-v0.17.1</a></li> <li><a href="inferno-v1.0.0-beta9"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> inferno-v1.0.0-beta9</a></li> <li><a href="kivi-v1.0.0-rc2"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> kivi-v1.0.0-rc2</a></li> <li><a href="knockout-v3.4.1"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> knockout-v3.4.1</a></li> <li><a href="mithril-v0.2.5"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> mithril-v0.2.5</a></li> <li><a href="mithril-v1.0.0-alpha"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> mithril-v1.0.0-alpha</a></li> <li><a href="plastiq-v1.33.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> plastiq-v1.33.0</a></li> <li><a href="polymer-v1.7.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> polymer-v1.7.0</a></li> <li><a href="preact-v6.4.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> preact-v6.4.0</a></li> <li><a href="ractive-v0.8.5"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> ractive-v0.8.5</a></li> <li><a href="ractive-edge"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> ractive-edge</a></li> <li><a href="react-lite-v0.15.27"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> react-lite-v0.15.27</a></li> <li><a href="react-v15.4.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> react-v15.4.0</a></li> <li><a href="react-v15.4.0-mobX-v2.6.3"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> react-v15.4.0-mobX-v2.6.3</a></li> <li><a href="react-v15.4.0-redux-v3.6.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> react-v15.4.0-redux-v3.6.0</a></li> <li><a href="riot-v2.6.7"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> riot-v2.6.7</a></li> <li><a href="riot-v3.0.7"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> riot-v3.0.7</a></li> <li><a href="simulacra-v1.5.5"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> simulacra-v1.5.5</a></li> <li><a href="tsers-v1.0.0"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> tsers-v1.0.0</a></li> <li><a href="vanillajs"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> vanillajs</a></li> <li><a href="vidom-v0.5.3"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> vidom-v0.5.3</a></li> <li><a href="vue-v2.1.3"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> vue-v2.1.3</a></li> </ul> </div> </div> <div class="panel panel-default"> <div class="panel-body"> <ul class="nav nav-pills nav-stacked"> <li><a href="webdriver-ts/table.html"><span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span> Table Report</a></li> </ul> </div> </div></div></body></html>
3 changes: 3 additions & 0 deletions riot-v3.0.7/.babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"presets": ["es2015-riot"]
}
32 changes: 32 additions & 0 deletions riot-v3.0.7/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>riot v3.0.7</title>
<link href="../css/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="../css/main.css" rel="stylesheet"/>
</head>
<body>
<app></app>
<script>
var startTime
var lastMeasure
var startMeasure = function(name) {
startTime = performance.now()
lastMeasure = name
}
var stopMeasure = function() {
var last = lastMeasure
if (lastMeasure) {
window.setTimeout(function () {
lastMeasure = null
var stop = performance.now()
var duration = 0
console.log(last+' took '+(stop-startTime))
}, 0)
}
}
</script>
<script src='dist/main.js'></script>
</body>
</html>
19 changes: 19 additions & 0 deletions riot-v3.0.7/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "js-framework-benchmark-riot",
"version": "1.0.0",
"description": "Benchmark for riot framework",
"scripts": {
"build-dev": "webpack -w -d -c webpack.config.js",
"build-prod": "webpack -d -c webpack.config.js"
},
"devDependencies": {
"babel-core": "6.18.2",
"babel-loader": "6.2.8",
"babel-preset-es2015-riot": "1.1.0",
"tag-loader": "0.3.0",
"webpack": "1.13.3"
},
"dependencies": {
"riot": "3.0.7"
}
}
124 changes: 124 additions & 0 deletions riot-v3.0.7/src/app.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
/*global riot */
<app>
<div class='container'>
<div class='jumbotron'>
<div class='row'>
<div class='col-md-6'>
<h1>riot v3.0.7</h1>
</div>
<div class='col-md-6'>
<div class='row'>
<div class='col-sm-6 smallpad'>
<button type='button' class='btn btn-primary btn-block' id='run' onclick={ methods.run }>
Create 1,000 rows
</button>
</div>
<div class='col-sm-6 smallpad'>
<button type='button' class='btn btn-primary btn-block' id='runlots' onclick={ methods.runLots }>Create 10,000 rows
</button>
</div>
<div class='col-sm-6 smallpad'>
<button type='button' class='btn btn-primary btn-block' id='add' onclick={ methods.add }>
Append 1,000 rows
</button>
</div>
<div class='col-sm-6 smallpad'>
<button type='button' class='btn btn-primary btn-block' id='update' onclick={ methods.update }>Update every 10th row
</button>
</div>
<div class='col-sm-6 smallpad'>
<button type='button' class='btn btn-primary btn-block' id='clear' onclick={ methods.clear }>
Clear
</button>
</div>
<div class='col-sm-6 smallpad'>
<button type='button' class='btn btn-primary btn-block' id="swaprows" onclick={ methods.swapRows } >
Swap Rows
</button>
</div>
</div>
</div>
</div>
</div>
<table class='table table-hover table-striped test-data'>
<tbody>
<tr each={ rows } class={ danger: id == selected } no-reorder>
<td class='col-md-1'>{ id }</td>
<td class='col-md-4'>
<a onclick={ methods.select }>{ label }</a>
</td>
<td class='col-md-1'>
<a onclick={ methods.remove }><span class='glyphicon glyphicon-remove' aria-hidden='true'></span></a>
</td>
<td class='col-md-6'></td>
</tr>
</tbody>
</table>
<span class='preloadicon glyphicon glyphicon-remove' aria-hidden='true'></span>
</div>
<script>
const store = opts.store

this.methods = {
add: () => {
startMeasure('add')
store.add()
this.rows = store.data
this.selected = store.selected
stopMeasure()
},
remove: (e) => {
startMeasure('remove')
store.delete(e.item.id)
this.rows = store.data
this.selected = store.selected
stopMeasure()
},
select: (e) => {
startMeasure('select')
store.select(e.item.id)
this.rows = store.data
this.selected = store.selected
stopMeasure()
},
run: () => {
startMeasure('run')
store.run()
this.rows = store.data
this.selected = store.selected
stopMeasure()
},
update: () => {
startMeasure('update')
store.update()
this.rows = store.data
this.selected = store.selected
stopMeasure()
},
runLots: () => {
startMeasure('runLots')
store.runLots()
this.rows = store.data
this.selected = store.selected
stopMeasure()
},
clear: () => {
startMeasure('clear')
store.clear()
this.rows = store.data
this.selected = store.selected
stopMeasure()
},
swapRows: () => {
startMeasure('swapRows')
store.swapRows()
this.rows = store.data
this.selected = store.selected
stopMeasure()
}
}

this.rows = store.data
this.selected = store.selected
</script>
</app>
7 changes: 7 additions & 0 deletions riot-v3.0.7/src/main.es6.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import riot from 'riot'
import Store from './store'
import './app.html'

riot.mount('app', {
store: new Store()
});
77 changes: 77 additions & 0 deletions riot-v3.0.7/src/store.es6.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
'use strict'

function _random(max) {
return Math.round(Math.random()*1000)%max
}

export default class Store {
constructor() {
this.data = []
this.selected = undefined
this.id = 1
}
buildData(count = 1000) {
var adjectives = ['pretty', 'large', 'big', 'small', 'tall', 'short', 'long', 'handsome', 'plain', 'quaint', 'clean', 'elegant', 'easy', 'angry', 'crazy', 'helpful', 'mushy', 'odd', 'unsightly', 'adorable', 'important', 'inexpensive', 'cheap', 'expensive', 'fancy']
var colours = ['red', 'yellow', 'blue', 'green', 'pink', 'brown', 'purple', 'brown', 'white', 'black', 'orange']
var nouns = ['table', 'chair', 'house', 'bbq', 'desk', 'car', 'pony', 'cookie', 'sandwich', 'burger', 'pizza', 'mouse', 'keyboard']
var data = []
for (var i = 0; i < count; i++) {
data.push({id: this.id++, label: adjectives[_random(adjectives.length)] + ' ' + colours[_random(colours.length)] + ' ' + nouns[_random(nouns.length)] })
}
return data
}
updateData(mod = 10) {
// Just assigning setting each tenth this.data doesn't cause a redraw, the following does:
var newData = []
for (let i = 0; i < this.data.length; i ++) {
if (i%10===0) {
newData[i] = Object.assign({}, this.data[i], {label: this.data[i].label + ' !!!'})
} else {
newData[i] = this.data[i]
}
}
this.data = newData
}
delete(id) {
const idx = this.data.findIndex(d => d.id==id)
this.data.splice(idx, 1)
}
run() {
this.data = this.buildData()
this.selected = undefined
}
add() {
this.data = this.data.concat(this.buildData(1000))
}
update() {
this.updateData()
}
select(id) {
this.selected = id
}
runLots() {
this.data = this.buildData(10000)
this.selected = undefined
}
clear() {
this.data = []
this.selected = undefined
}
swapRows() {
if(this.data.length > 10) {
let d4 = this.data[4]
let d9 = this.data[9]

var newData = this.data.map(function(data, i) {
if(i === 4) {
return d9
}
else if(i === 9) {
return d4
}
return data
})
this.data = newData
}
}
}
49 changes: 49 additions & 0 deletions riot-v3.0.7/webpack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
'use strict'

var cache = {}

var loaders = [
{
test: /\.es6\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.html$/, loader: 'tag',
query: {
type: 'es6'
}
},
{
test: /\.css$/,
loader: 'style-loader!css-loader'
}
]

var extensions = [
'', '.js', '.es6.js', '.html'
]

module.exports = [{
cache: cache,
module: {
loaders: loaders
},
entry: {
main: './src/main',
},
output: {
path: './dist',
filename: '[name].js',
sourceMapFilename: "[file].map",
},
resolve: {
extensions: extensions,
root: [
__dirname + '/src'
],
alias: {
"riot": __dirname+"/node_modules/riot/riot.min.js",
}
}
}]
1 change: 1 addition & 0 deletions webdriver-ts/src/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ export let frameworks = [
f("react-v15.4.0-mobX-v2.6.3"),
f("react-v15.4.0-redux-v3.6.0"),
f("riot-v2.6.7"),
f("riot-v3.0.7"),
f("simulacra-v1.5.5"),
f("tsers-v1.0.0"),
f("vanillajs"),
Expand Down