Skip to content

Commit

Permalink
chore: switch to mitata
Browse files Browse the repository at this point in the history
  • Loading branch information
kazupon committed Dec 8, 2024
1 parent 12aa95e commit 790d279
Show file tree
Hide file tree
Showing 11 changed files with 323 additions and 409 deletions.
41 changes: 13 additions & 28 deletions benchmark/compile.mjs
Original file line number Diff line number Diff line change
@@ -1,34 +1,19 @@
import { baseCompile } from '@intlify/message-compiler'
import { createCommonJS } from 'mlly'
import { displayMemoryUsage } from './utils.mjs'
import { bench, run } from 'mitata'
import { displayMemoryUsage, parseArgs } from './utils.mjs'

const { require } = createCommonJS(import.meta.url)
const { Suite } = require('benchmark')
const args = parseArgs()
console.log(`compilation:`)

async function main() {
console.log(`compilation:`)
console.log()
bench(`compile simple message`, () => {
baseCompile(`hello world`)
})

new Suite('compilation')
.add(`compile simple message`, () => {
baseCompile(`hello world`)
})
.add(`compile complex message`, () => {
// eslint-disable-next-line no-irregular-whitespace
baseCompile(`@.caml:{'no apples'} 0 | {0} apple 0 | {n} apples 0`)
})
.on('error', event => {
console.log(String(event.target))
})
.on('cycle', event => {
console.log(String(event.target))
})
.run()
bench(`compile complex message`, () => {
// eslint-disable-next-line no-irregular-whitespace
baseCompile(`@.caml:{'no apples'} 0 | {0} apple 0 | {n} apples 0`)
})

displayMemoryUsage()
}
await run(args)

main().catch(err => {
console.error(err)
process.exit(1)
})
displayMemoryUsage()
101 changes: 43 additions & 58 deletions benchmark/complex-jit-aot.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,12 @@ import {
translate
} from '@intlify/core-base'
import { baseCompile } from '@intlify/message-compiler'
import { createCommonJS } from 'mlly'
import { bench, run } from 'mitata'
import { dirname, resolve } from 'node:path'
import { createI18n } from 'vue-i18n'
import { displayMemoryUsage, readJson } from './utils.mjs'

const { require } = createCommonJS(import.meta.url)
const { Suite } = require('benchmark')
import { displayMemoryUsage, parseArgs, readJson } from './utils.mjs'

const args = parseArgs()
function precompile(data) {
const keys = Object.keys(data)
keys.forEach(key => {
Expand All @@ -25,64 +23,51 @@ function precompile(data) {
return data
}

async function main() {
const resources = await readJson(
resolve(dirname('.'), './benchmark/complex.json')
)
const len = Object.keys(resources).length

console.log(`complex pattern on ${len} resources (JIT + AOT):`)
console.log()
const resources = await readJson(
resolve(dirname('.'), './benchmark/complex.json')
)
const len = Object.keys(resources).length
console.log(`complex pattern on ${len} resources (JIT + AOT):`)

resources['no apples'] = 'no apples'
resources['no apples'] = 'no apples'

registerMessageCompiler(compile)
const precompiledResources = precompile(resources)
registerMessageCompiler(compile)
const precompiledResources = precompile(resources)

const ctx = createCoreContext({
locale: 'en',
modifiers: {
caml: val => val
},
messages: {
en: precompiledResources
}
})
const ctx = createCoreContext({
locale: 'en',
modifiers: {
caml: val => val
},
messages: {
en: precompiledResources
}
})

const i18n = createI18n({
legacy: false,
locale: 'en',
modifiers: {
caml: val => val
},
messages: {
en: precompiledResources
}
})
const i18n = createI18n({
legacy: false,
locale: 'en',
modifiers: {
caml: val => val
},
messages: {
en: precompiledResources
}
})

new Suite('complex pattern')
.add(`resolve time with core`, () => {
translate(ctx, 'complex500', 2)
})
.add(`resolve time on composition`, () => {
clearCompileCache()
i18n.global.t('complex500', 2)
})
.add(`resolve time on composition with compile cache`, () => {
i18n.global.t('complex500', 2)
})
.on('error', event => {
console.log(String(event.target))
})
.on('cycle', event => {
console.log(String(event.target))
})
.run()
bench(`resolve time with core`, () => {
translate(ctx, 'complex500', 2)
})

displayMemoryUsage()
}
bench(`resolve time on composition`, () => {
clearCompileCache()
i18n.global.t('complex500', 2)
})

main().catch(err => {
console.error(err)
process.exit(1)
bench(`resolve time on composition with compile cache`, () => {
i18n.global.t('complex500', 2)
})

await run(args)

displayMemoryUsage()
105 changes: 45 additions & 60 deletions benchmark/complex-jit.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,71 +7,56 @@ import {
registerMessageCompiler,
translate
} from '@intlify/core-base'
import { createCommonJS } from 'mlly'
import { bench, run } from 'mitata'
import { dirname, resolve } from 'node:path'
import { createI18n } from 'vue-i18n'
import { displayMemoryUsage, readJson } from './utils.mjs'

const { require } = createCommonJS(import.meta.url)
const { Suite } = require('benchmark')

async function main() {
const resources = await readJson(
resolve(dirname('.'), './benchmark/complex.json')
)
const len = Object.keys(resources).length

console.log(`complex pattern on ${len} resources (JIT):`)
console.log()

resources['no apples'] = 'no apples'
import { displayMemoryUsage, parseArgs, readJson } from './utils.mjs'

const args = parseArgs()
const resources = await readJson(
resolve(dirname('.'), './benchmark/complex.json')
)
const len = Object.keys(resources).length
console.log(`complex pattern on ${len} resources (JIT):`)

resources['no apples'] = 'no apples'

registerMessageCompiler(compile)

const ctx = createCoreContext({
locale: 'en',
modifiers: {
caml: val => val
},
messages: {
en: resources
}
})

registerMessageCompiler(compile)
const i18n = createI18n({
legacy: false,
locale: 'en',
modifiers: {
caml: val => val
},
messages: {
en: resources
}
})

const ctx = createCoreContext({
locale: 'en',
modifiers: {
caml: val => val
},
messages: {
en: resources
}
})
bench(`resolve time with core`, () => {
translate(ctx, 'complex500', 2)
})

const i18n = createI18n({
legacy: false,
locale: 'en',
modifiers: {
caml: val => val
},
messages: {
en: resources
}
})
bench(`resolve time on composition`, () => {
clearCompileCache()
i18n.global.t('complex500', 2)
})

new Suite('complex pattern')
.add(`resolve time with core`, () => {
translate(ctx, 'complex500', 2)
})
.add(`resolve time on composition`, () => {
clearCompileCache()
i18n.global.t('complex500', 2)
})
.add(`resolve time on composition with compile cache`, () => {
i18n.global.t('complex500', 2)
})
.on('error', event => {
console.log(String(event.target))
})
.on('cycle', event => {
console.log(String(event.target))
})
.run()
bench(`resolve time on composition with compile cache`, () => {
i18n.global.t('complex500', 2)
})

displayMemoryUsage()
}
await run(args)

main().catch(err => {
console.error(err)
process.exit(1)
})
displayMemoryUsage()
Loading

0 comments on commit 790d279

Please sign in to comment.