Skip to content

Commit

Permalink
V8 performance improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
henrygd committed Jun 26, 2024
1 parent 3a2c54d commit cd27ddc
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 24 deletions.
30 changes: 18 additions & 12 deletions index.async-storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ interface Queue {
size(): number
}

// this just saves a few bytes
let Promize = Promise

/**
* Creates a new queue with the specified concurrency level.
*
Expand All @@ -46,7 +49,6 @@ export let newQueue = (concurrency: number): Queue => {
let tail: Node<PromiseLike<any>> | undefined | null
let resolveDonePromise: (value: void | PromiseLike<void>) => void
let donePromise: Promise<void> | void
let Promize = Promise

let afterRun = () => {
active--
Expand All @@ -70,17 +72,21 @@ export let newQueue = (concurrency: number): Queue => {
}

return {
add: <T>(p: () => PromiseLike<T>) =>
new Promize((res, rej) => {
let node = { p: AsyncResource.bind(p), res, rej }
if (head) {
tail = tail!.next = node
} else {
tail = head = node
}
size++
run()
}),
add<T>(p: () => PromiseLike<T>) {
let node = { p: AsyncResource.bind(p) } as unknown as Node<PromiseLike<T>>
let promise = new Promize((res, rej) => {
node.res = res
node.rej = rej
})
if (head) {
tail = tail!.next = node
} else {
tail = head = node
}
size++
run()
return promise as Promise<T>
},
done: () => {
if (!size) {
return Promize.resolve()
Expand Down
30 changes: 18 additions & 12 deletions index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ interface Queue {
size(): number
}

// this just saves a few bytes
let Promize = Promise

/**
* Creates a new queue with the specified concurrency level.
*
Expand All @@ -37,7 +40,6 @@ export let newQueue = (concurrency: number): Queue => {
let tail: Node<PromiseLike<any>> | undefined | null
let resolveDonePromise: (value: void | PromiseLike<void>) => void
let donePromise: Promise<void> | void
let Promize = Promise

let afterRun = () => {
active--
Expand All @@ -61,17 +63,21 @@ export let newQueue = (concurrency: number): Queue => {
}

return {
add: <T>(p: () => PromiseLike<T>) =>
new Promize((res, rej) => {
let node = { p, res, rej }
if (head) {
tail = tail!.next = node
} else {
tail = head = node
}
size++
run()
}),
add<T>(p: () => PromiseLike<T>) {
let node = { p } as Node<PromiseLike<T>>
let promise = new Promize((res, rej) => {
node.res = res
node.rej = rej
})
if (head) {
tail = tail!.next = node
} else {
tail = head = node
}
size++
run()
return promise as Promise<T>
},
done: () => {
if (!size) {
return Promize.resolve()
Expand Down

0 comments on commit cd27ddc

Please sign in to comment.