kkebo / zyphy

Zyphy is (or will be) a fast web browser engine written in Swift.
MIT License
4 stars 1 forks source link

feat: implement CharRefTokenizer #39

Closed kkebo closed 5 months ago

kkebo commented 9 months ago

Description

I've implemented CharRefTokenizer.

Benchmark Results

$ swift package --package-path Benchmarks benchmark baseline compare main
warning: 'package-benchmark': Jemalloc disabled through environment variable.
Building for debugging...
[9/9] Emitting module BenchmarkBoilerplateGenerator
Build of product 'BenchmarkBoilerplateGenerator' complete! (1.32s)
Building for debugging...
[1/1] Write swift-version--FC39A71C9A0968F.txt
Build of product 'BenchmarkTool' complete! (2.12s)
Build complete!
Building BenchmarkTool in release mode...
Building benchmark targets in release mode for benchmark run...
Building MyBenchmark

==================
Running Benchmarks
==================

100% [------------------------------------------------------------] ETA: 00:00:00 | MyBenchmark:TokenizerBenchmark

===================================================
Comparing results between 'main' and 'Current_run'
===================================================

Host 'Brown-rhinoceros-beetle' with 8 'aarch64' processors with 7 GB memory, running:
#1 SMP PREEMPT_DYNAMIC Sun Mar 24 19:44:17 UTC 2024

MyBenchmark
============================================================================================================================

----------------------------------------------------------------------------------------------------------------------------
TokenizerBenchmark metrics
----------------------------------------------------------------------------------------------------------------------------

╒══════════════════════════════════════════╤═════════╤═════════╤═════════╤═════════╤═════════╤═════════╤═════════╤═════════╕
│         Time (wall clock) (μs) *         │      p0 │     p25 │     p50 │     p75 │     p90 │     p99 │    p100 │ Samples │
╞══════════════════════════════════════════╪═════════╪═════════╪═════════╪═════════╪═════════╪═════════╪═════════╪═════════╡
│                   main                   │      12 │      12 │      12 │      12 │      13 │      20 │      20 │      80 │
├──────────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│               Current_run                │      12 │      12 │      12 │      13 │      13 │      15 │      15 │      81 │
├──────────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│                    Δ                     │       0 │       0 │       0 │       1 │       0 │      -5 │      -5 │       1 │
├──────────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│              Improvement %               │       0 │       0 │       0 │      -8 │       0 │      25 │      25 │       1 │
╘══════════════════════════════════════════╧═════════╧═════════╧═════════╧═════════╧═════════╧═════════╧═════════╧═════════╛

╒══════════════════════════════════════════╤═════════╤═════════╤═════════╤═════════╤═════════╤═════════╤═════════╤═════════╕
│          Throughput (# / s) (K)          │      p0 │     p25 │     p50 │     p75 │     p90 │     p99 │    p100 │ Samples │
╞══════════════════════════════════════════╪═════════╪═════════╪═════════╪═════════╪═════════╪═════════╪═════════╪═════════╡
│                   main                   │      82 │      82 │      81 │      81 │      79 │      49 │      49 │      80 │
├──────────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│               Current_run                │      82 │      81 │      81 │      79 │      79 │      65 │      65 │      81 │
├──────────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│                    Δ                     │       0 │      -1 │       0 │      -2 │       0 │      16 │      16 │       1 │
├──────────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│              Improvement %               │       0 │      -1 │       0 │      -2 │       0 │      33 │      33 │       1 │
╘══════════════════════════════════════════╧═════════╧═════════╧═════════╧═════════╧═════════╧═════════╧═════════╧═════════╛
github-actions[bot] commented 5 months ago

Code Metrics Report

main (ce90468) #39 (08e1ef5) +/-
Coverage 88.9% 88.9% -0.0%
Details ``` diff | | main (ce90468) | #39 (08e1ef5) | +/- | |-----------|----------------|---------------|-------| - | Coverage | 88.9% | 88.9% | -0.0% | | Files | 7 | 8 | +1 | | Lines | 1214 | 1248 | +34 | + | Covered | 1079 | 1109 | +30 | ```

Code coverage of files in pull request scope (88.6% → 88.6%)

Files Coverage +/-
Sources/HTMLEntities/namedChars.swift 100.0% +100.0%
Sources/Tokenizer/CharRefTokenizer.swift 96.0% -1.6%
Sources/Tokenizer/Tokenizer.swift 87.0% -0.1%

Reported by octocov

github-actions[bot] commented 5 months ago

Code Metrics Report

main (d0e7ac6) #39 (e5805df) +/-
Coverage 88.9% 88.9% -0.0%
Details ``` diff | | main (d0e7ac6) | #39 (e5805df) | +/- | |-----------|----------------|---------------|-------| - | Coverage | 88.9% | 88.9% | -0.0% | | Files | 7 | 8 | +1 | | Lines | 1214 | 1248 | +34 | + | Covered | 1079 | 1109 | +30 | ```

Code coverage of files in pull request scope (88.6% → 88.6%)

Files Coverage +/-
Sources/HTMLEntities/namedChars.swift 100.0% +100.0%
Sources/Tokenizer/CharRefTokenizer.swift 96.0% -1.6%
Sources/Tokenizer/Tokenizer.swift 87.0% -0.1%

Reported by octocov

github-actions[bot] commented 5 months ago

Code Metrics Report

main (d0e7ac6) #39 (efc14d1) +/-
Coverage 88.9% 88.9% -0.0%
Details ``` diff | | main (d0e7ac6) | #39 (efc14d1) | +/- | |-----------|----------------|---------------|-------| - | Coverage | 88.9% | 88.9% | -0.0% | | Files | 7 | 8 | +1 | | Lines | 1214 | 1248 | +34 | + | Covered | 1079 | 1109 | +30 | ```

Code coverage of files in pull request scope (88.6% → 88.6%)

Files Coverage +/-
Sources/HTMLEntities/namedChars.swift 100.0% +100.0%
Sources/Tokenizer/CharRefTokenizer.swift 96.0% -1.6%
Sources/Tokenizer/Tokenizer.swift 87.0% -0.1%

Reported by octocov

github-actions[bot] commented 5 months ago

Code Metrics Report

main (e55b299) #39 (23c940b) +/-
Coverage 88.9% 88.9% +0.1%
Details ``` diff | | main (e55b299) | #39 (23c940b) | +/- | |-----------|----------------|---------------|-------| + | Coverage | 88.9% | 88.9% | +0.1% | | Files | 7 | 8 | +1 | | Lines | 1202 | 1245 | +43 | + | Covered | 1068 | 1107 | +39 | ```

Code coverage of files in pull request scope (88.6% → 88.6%)

Files Coverage +/-
Sources/HTMLEntities/namedChars.swift 100.0% +100.0%
Sources/Tokenizer/CharRefTokenizer.swift 96.0% -1.6%
Sources/Tokenizer/Tokenizer.swift 87.0% 0.0%

Reported by octocov

github-actions[bot] commented 5 months ago

Code Metrics Report

main (e55b299) #39 (9319ebc) +/-
Coverage 88.9% 88.9% +0.1%
Details ``` diff | | main (e55b299) | #39 (9319ebc) | +/- | |-----------|----------------|---------------|-------| + | Coverage | 88.9% | 88.9% | +0.1% | | Files | 7 | 8 | +1 | | Lines | 1202 | 1274 | +72 | + | Covered | 1068 | 1133 | +65 | ```

Code coverage of files in pull request scope (88.6% → 88.7%)

Files Coverage +/-
Sources/HTMLEntities/namedChars.swift 100.0% +100.0%
Sources/Tokenizer/CharRefTokenizer.swift 95.2% -2.4%
Sources/Tokenizer/Tokenizer.swift 87.0% 0.0%

Reported by octocov

github-actions[bot] commented 5 months ago

Code Metrics Report

main (e55b299) #39 (c6b2f99) +/-
Coverage 88.9% 89.0% +0.2%
Details ``` diff | | main (e55b299) | #39 (c6b2f99) | +/- | |-----------|----------------|---------------|-------| + | Coverage | 88.9% | 89.0% | +0.2% | | Files | 7 | 8 | +1 | | Lines | 1202 | 1274 | +72 | + | Covered | 1068 | 1134 | +66 | ```

Code coverage of files in pull request scope (88.6% → 88.7%)

Files Coverage +/-
Sources/HTMLEntities/namedChars.swift 100.0% +100.0%
Sources/Tokenizer/CharRefTokenizer.swift 95.6% -2.0%
Sources/Tokenizer/Tokenizer.swift 87.0% 0.0%

Reported by octocov

github-actions[bot] commented 5 months ago

Code Metrics Report

main (e55b299) #39 (3a31200) +/-
Coverage 88.9% 88.7% -0.1%
Details ``` diff | | main (e55b299) | #39 (3a31200) | +/- | |-----------|----------------|---------------|-------| - | Coverage | 88.9% | 88.7% | -0.1% | | Files | 7 | 8 | +1 | | Lines | 1202 | 1258 | +56 | + | Covered | 1068 | 1116 | +48 | ```

Code coverage of files in pull request scope (88.6% → 88.4%)

Files Coverage +/-
Sources/HTMLEntities/namedChars.swift 100.0% +100.0%
Sources/Tokenizer/CharRefTokenizer.swift 97.7% +0.0%
Sources/Tokenizer/Tokenizer.swift 86.3% -0.7%

Reported by octocov