Skip to content

Commit 9db4793

Browse files
Update Benchmark Example App
Co-authored-by: Andrea Lin <[email protected]>
1 parent 521f3f4 commit 9db4793

File tree

8 files changed

+188
-134
lines changed

8 files changed

+188
-134
lines changed

example/ios/Podfile.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -1298,7 +1298,7 @@ PODS:
12981298
- ReactCommon/turbomodule/bridging
12991299
- ReactCommon/turbomodule/core
13001300
- Yoga
1301-
- RNSodium (0.2.0):
1301+
- RNSodium (0.2.1):
13021302
- DoubleConversion
13031303
- glog
13041304
- hermes-engine
@@ -1593,10 +1593,10 @@ SPEC CHECKSUMS:
15931593
React-utils: 4476b7fcbbd95cfd002f3e778616155241d86e31
15941594
ReactCommon: ecad995f26e0d1e24061f60f4e5d74782f003f12
15951595
RNScreens: d3d50aa84db4541eee00fbb1f32151030f56c510
1596-
RNSodium: 381683159bdd22fc7bc65b6e4e6a8950cbb27bc1
1596+
RNSodium: f047dde7855aa3314c68045d90469fb2b297b555
15971597
RNVectorIcons: 46a635b764a63e9a4ffedae054bca3847e0c8934
15981598
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
1599-
Yoga: ae3c32c514802d30f687a04a6a35b348506d411f
1599+
Yoga: 2f71ecf38d934aecb366e686278102a51679c308
16001600

16011601
PODFILE CHECKSUM: 2b476e664f3e7c6b87013748402bfab7c78276e5
16021602

example/src/components/Benchmark.tsx

+3-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { formatDuration } from '../utils/time'
66

77
type Props = {
88
title: string
9-
benchmarkFn: () => void
9+
benchmarkFn: () => number
1010
setResult: (result: number) => void
1111
result: number | undefined
1212
}
@@ -34,11 +34,8 @@ export const Benchmark: FunctionComponent<Props> = ({
3434
// workaround to show the loading state
3535
await sleep(100)
3636

37-
const start = performance.now()
38-
benchmarkFn()
39-
const end = performance.now()
40-
41-
setResult(end - start)
37+
const res = benchmarkFn()
38+
setResult(res)
4239

4340
setIsLoading(false)
4441
setCurrentLoading(false)

example/src/components/Percentage.tsx

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import React, { useMemo, type FunctionComponent } from 'react'
2+
import { Text } from 'react-native-paper'
3+
4+
type Props = {
5+
jsiTime: number | undefined
6+
b64Time: number | undefined
7+
}
8+
9+
export const Percentage: FunctionComponent<Props> = ({ jsiTime, b64Time }) => {
10+
const fasterPercentage = useMemo(() => {
11+
if (typeof jsiTime === 'undefined' || typeof b64Time === 'undefined') {
12+
return undefined
13+
}
14+
15+
return ((b64Time - jsiTime) / b64Time) * 100
16+
}, [jsiTime, b64Time])
17+
18+
return (
19+
<Text
20+
style={typeof fasterPercentage === "undefined" ? undefined : {
21+
color: fasterPercentage > 0 ? 'green' : 'red',
22+
}}
23+
>
24+
{fasterPercentage ? `${fasterPercentage.toFixed(2)}%` : 'N/A'}
25+
</Text>
26+
)
27+
}

example/src/screens/B64.tsx

+16-13
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,50 @@
11
import React, { type FunctionComponent } from "react"
22
import { View, ScrollView } from "react-native"
3-
import { measureB64, maxSize, mediumSize, smallSize } from "../utils/benchmarks"
3+
import { measureB64, maxSize, mediumSize, smallSize, largeSize } from "../utils/benchmarks"
44
import { Benchmark } from "../components/Benchmark"
55
import { styles } from "../styles/common"
66
import useBenchmarks from "../stores/Benchmarks"
77

88
export const B64: FunctionComponent = () => {
99
const setSmallArrayB64Measurements = useBenchmarks.use.setSmallArrayB64Measurements()
1010
const setMediumArrayB64Measurements = useBenchmarks.use.setMediumArrayB64Measurements()
11+
const setLargeArrayB64Measurements = useBenchmarks.use.setLargeArrayB64Measurements()
1112
const setMaxArrayB64Measurements = useBenchmarks.use.setMaxArrayB64Measurements()
1213

1314
const smallArrayB64Measurements = useBenchmarks.use.smallArrayB64Measurements()
1415
const mediumArrayB64Measurements = useBenchmarks.use.mediumArrayB64Measurements()
16+
const largeArrayB64Measurements = useBenchmarks.use.largeArrayB64Measurements()
1517
const maxArrayB64Measurements = useBenchmarks.use.maxArrayB64Measurements()
1618

1719
return (
1820
<ScrollView>
1921
<View style={[styles.container, styles.benchmarkContainer]}>
2022
<Benchmark
21-
benchmarkFn={() => {
22-
measureB64(smallSize)
23-
}}
23+
benchmarkFn={() => measureB64(smallSize)}
2424
setResult={setSmallArrayB64Measurements}
2525
result={smallArrayB64Measurements}
26-
title={`Small Array B64 ${smallSize} bytes`}
26+
title={`10k loops on Small Array B64 ${smallSize} bytes`}
2727
/>
2828

2929
<Benchmark
30-
benchmarkFn={() => {
31-
measureB64(mediumSize)
32-
}}
30+
benchmarkFn={() => measureB64(mediumSize)}
3331
setResult={setMediumArrayB64Measurements}
3432
result={mediumArrayB64Measurements}
35-
title={`Medium Array B64 ${mediumSize} bytes`}
33+
title={`10k loops on Medium Array B64 ${mediumSize} bytes`}
3634
/>
3735

3836
<Benchmark
39-
benchmarkFn={() => {
40-
measureB64(maxSize)
41-
}}
37+
benchmarkFn={() => measureB64(largeSize)}
38+
setResult={setLargeArrayB64Measurements}
39+
result={largeArrayB64Measurements}
40+
title={`10k loops on Large Array B64 ${mediumSize} bytes`}
41+
/>
42+
43+
<Benchmark
44+
benchmarkFn={() => measureB64(maxSize)}
4245
setResult={setMaxArrayB64Measurements}
4346
result={maxArrayB64Measurements}
44-
title={`Max Array B64 ${maxSize} bytes`}
47+
title={`10k loops on Max Array B64 ${maxSize} bytes`}
4548
/>
4649

4750
</View>

example/src/screens/JSI.tsx

+17-13
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,49 @@ import { View, ScrollView, } from "react-native"
33
import useBenchmarks from "../stores/Benchmarks"
44
import { styles } from "../styles/common"
55
import { Benchmark } from "../components/Benchmark"
6-
import { measure, smallSize, mediumSize, maxSize } from "../utils/benchmarks"
6+
import { measure, smallSize, mediumSize, maxSize, largeSize } from "../utils/benchmarks"
77

88
export const JSI: FunctionComponent = () => {
99
const setSmallArrayJsiMeasurements = useBenchmarks.use.setSmallArrayJsiMeasurements()
1010
const setMediumArrayJsiMeasurements = useBenchmarks.use.setMediumArrayJsiMeasurements()
11+
const setLargeArrayJsiMeasurements = useBenchmarks.use.setLargeArrayJsiMeasurements()
1112
const setMaxArrayJsiMeasurements = useBenchmarks.use.setMaxArrayJsiMeasurements()
1213

1314
const smallArrayJsiMeasurements = useBenchmarks.use.smallArrayJsiMeasurements()
1415
const mediumArrayJsiMeasurements = useBenchmarks.use.mediumArrayJsiMeasurements()
16+
const largeArrayJsiMeasurements = useBenchmarks.use.largeArrayJsiMeasurements()
1517
const maxArrayJsiMeasurements = useBenchmarks.use.maxArrayJsiMeasurements()
1618

19+
1720
return (
1821
<ScrollView>
1922
<View style={[styles.container, styles.benchmarkContainer]}>
2023
<Benchmark
21-
benchmarkFn={() => {
22-
measure(smallSize)
23-
}}
24+
benchmarkFn={() => measure(smallSize)}
2425
setResult={setSmallArrayJsiMeasurements}
2526
result={smallArrayJsiMeasurements}
26-
title={`Small Array JSI ${smallSize} bytes`}
27+
title={`10k loops on Small Array JSI ${smallSize} bytes`}
2728
/>
2829

2930
<Benchmark
30-
benchmarkFn={() => {
31-
measure(mediumSize)
32-
}}
31+
benchmarkFn={() => measure(mediumSize)}
3332
setResult={setMediumArrayJsiMeasurements}
3433
result={mediumArrayJsiMeasurements}
35-
title={`Medium Array JSI ${mediumSize} bytes`}
34+
title={`10k loops on Medium Array JSI ${mediumSize} bytes`}
35+
/>
36+
37+
<Benchmark
38+
benchmarkFn={() => measure(largeSize)}
39+
setResult={setLargeArrayJsiMeasurements}
40+
result={largeArrayJsiMeasurements}
41+
title={`10k loops on Large Array JSI ${mediumSize} bytes`}
3642
/>
3743

3844
<Benchmark
39-
benchmarkFn={() => {
40-
measure(maxSize)
41-
}}
45+
benchmarkFn={() => measure(maxSize)}
4246
setResult={setMaxArrayJsiMeasurements}
4347
result={maxArrayJsiMeasurements}
44-
title={`Max Array JSI ${maxSize} bytes`}
48+
title={`10k loops on Max Array JSI ${maxSize} bytes`}
4549
/>
4650

4751
</View>

0 commit comments

Comments
 (0)