diff --git a/bench/README.md b/bench/README.md
index 28fbb40..7889b6b 100644
--- a/bench/README.md
+++ b/bench/README.md
@@ -18,14 +18,8 @@ need PostgreSQL and MySQL up and running.
To run the benchmarks tests just type in the console:
-```
-# POSIX-compatible shells
-$ MIX_ENV=bench mix run bench/bench_helper.exs
-```
-
-```
-# other shells
-$ env MIX_ENV=bench mix run bench/bench_helper.exs
+```sh
+mix run bench/bench_helper.exs
```
Benchmarks are inside the `scripts/` directory and are divided into two
@@ -44,6 +38,6 @@ script instead of `bench/bench_helper.exs`.
The easiest way to setup mysql and postgresql for the benchmarks is via Docker. Run the following commands to get an instance of each running.
```
-docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7
+docker run -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:8
docker run -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:13.2
```
diff --git a/bench/results/all.md b/bench/results/all.md
new file mode 100644
index 0000000..4d55936
--- /dev/null
+++ b/bench/results/all.md
@@ -0,0 +1,119 @@
+Benchmark
+
+Benchmark run from 2024-05-04 10:50:11.956493Z UTC
+
+## System
+
+Benchmark suite executing on the following system:
+
+
+
+ Operating System |
+ macOS |
+
+ CPU Information |
+ Apple M3 Max |
+
+ Number of Available Cores |
+ 16 |
+
+ Available Memory |
+ 128 GB |
+
+ Elixir Version |
+ 1.16.2 |
+
+ Erlang Version |
+ 26.2.4 |
+
+
+
+## Configuration
+
+Benchmark suite executing with the following configuration:
+
+
+
+ :time |
+ 10 s |
+
+ :parallel |
+ 1 |
+
+ :warmup |
+ 2 s |
+
+
+
+## Statistics
+
+
+
+Run Time
+
+
+
+ Name |
+ IPS |
+ Average |
+ Devitation |
+ Median |
+ 99th % |
+
+
+
+ MyXQL Repo.all/2 |
+ 639.68 |
+ 1.56 ms |
+ ±12.01% |
+ 1.54 ms |
+ 2.20 ms |
+
+
+
+ SQLite3 Repo.all/2 |
+ 465.99 |
+ 2.15 ms |
+ ±4.82% |
+ 2.13 ms |
+ 2.43 ms |
+
+
+
+ Pg Repo.all/2 |
+ 214.16 |
+ 4.67 ms |
+ ±12.05% |
+ 4.66 ms |
+ 5.86 ms |
+
+
+
+
+
+Run Time Comparison
+
+
+
+ Name |
+ IPS |
+ Slower |
+
+ MyXQL Repo.all/2 |
+ 639.68 |
+ |
+
+
+
+ SQLite3 Repo.all/2 |
+ 465.99 |
+ 1.37x |
+
+
+
+ Pg Repo.all/2 |
+ 214.16 |
+ 2.99x |
+
+
+
\ No newline at end of file
diff --git a/bench/results/insert.md b/bench/results/insert.md
index 3e8b360..9858f83 100644
--- a/bench/results/insert.md
+++ b/bench/results/insert.md
@@ -1,7 +1,6 @@
+Benchmark
-# Benchmark
-
-Benchmark run from 2021-03-24 02:05:58.706995Z UTC
+Benchmark run from 2024-05-04 10:49:35.563150Z UTC
## System
@@ -10,22 +9,22 @@ Benchmark suite executing on the following system:
Operating System |
- Linux |
+ macOS |
CPU Information |
- AMD Ryzen 7 PRO 4750U with Radeon Graphics |
+ Apple M3 Max |
Number of Available Cores |
16 |
Available Memory |
- 14.92 GB |
+ 128 GB |
Elixir Version |
- 1.11.3 |
+ 1.16.2 |
Erlang Version |
- 23.2.6 |
+ 26.2.4 |
@@ -50,7 +49,6 @@ Benchmark suite executing with the following configuration:
-
__Input: Changeset__
Run Time
@@ -67,35 +65,35 @@ Run Time
SQLite3 Insert |
- 7218.07 |
- 0.139 ms |
- ±43.60% |
- 0.123 ms |
- 0.37 ms |
+ 26.72 K |
+ 37.42 µs |
+ ±89.66% |
+ 32.88 µs |
+ 74.21 µs |
Pg Insert |
- 421.57 |
- 2.37 ms |
- ±12.13% |
- 2.37 ms |
- 2.90 ms |
+ 9.65 K |
+ 103.63 µs |
+ ±68.38% |
+ 102.75 µs |
+ 177.39 µs |
MyXQL Insert |
- 284.25 |
- 3.52 ms |
- ±13.34% |
- 3.53 ms |
- 5.05 ms |
+ 5.49 K |
+ 182.25 µs |
+ ±49.23% |
+ 182.33 µs |
+ 233.08 µs |
-Comparison
+Run Time Comparison
@@ -104,28 +102,26 @@ Comparison
Slower |
SQLite3 Insert |
- 7218.07 |
+ 26.72 K |
|
Pg Insert |
- 421.57 |
- 17.12x |
+ 9.65 K |
+ 2.77x |
MyXQL Insert |
- 284.25 |
- 25.39x |
+ 5.49 K |
+ 4.87x |
-
-
__Input: Struct__
@@ -143,35 +139,35 @@ Run Time
SQLite3 Insert |
- 7765.76 |
- 0.129 ms |
- ±32.88% |
- 0.122 ms |
- 0.28 ms |
+ 26.71 K |
+ 37.44 µs |
+ ±87.15% |
+ 32.92 µs |
+ 70.50 µs |
Pg Insert |
- 422.86 |
- 2.36 ms |
- ±10.49% |
- 2.36 ms |
- 3.02 ms |
+ 9.34 K |
+ 107.08 µs |
+ ±13.80% |
+ 106.87 µs |
+ 132.46 µs |
MyXQL Insert |
- 274.00 |
- 3.65 ms |
- ±38.43% |
- 3.59 ms |
- 4.75 ms |
+ 5.67 K |
+ 176.45 µs |
+ ±70.69% |
+ 176.79 µs |
+ 234.70 µs |
-Comparison
+Run Time Comparison
@@ -180,25 +176,20 @@ Comparison
Slower |
SQLite3 Insert |
- 7765.76 |
+ 26.71 K |
|
Pg Insert |
- 422.86 |
- 18.37x |
+ 9.34 K |
+ 2.86x |
MyXQL Insert |
- 274.00 |
- 28.34x |
+ 5.67 K |
+ 4.71x |
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/bench/results/load.md b/bench/results/load.md
index ec27e51..c36ec4d 100644
--- a/bench/results/load.md
+++ b/bench/results/load.md
@@ -1,7 +1,6 @@
+Benchmark
-# Benchmark
-
-Benchmark run from 2021-03-24 01:58:24.995583Z UTC
+Benchmark run from 2024-05-04 10:39:52.658755Z UTC
## System
@@ -10,22 +9,22 @@ Benchmark suite executing on the following system:
Operating System |
- Linux |
+ macOS |
CPU Information |
- AMD Ryzen 7 PRO 4750U with Radeon Graphics |
+ Apple M3 Max |
Number of Available Cores |
16 |
Available Memory |
- 14.92 GB |
+ 128 GB |
Elixir Version |
- 1.11.3 |
+ 1.16.2 |
Erlang Version |
- 23.2.6 |
+ 26.2.4 |
@@ -50,7 +49,6 @@ Benchmark suite executing with the following configuration:
-
__Input: Big 1 Million__
Run Time
@@ -66,36 +64,36 @@ Run Time
- SQLite3 Loader |
- 0.35 |
- 2.82 s |
- ±15.78% |
- 2.82 s |
- 3.13 s |
+ MyXQL Loader |
+ 1.90 |
+ 526.95 ms |
+ ±7.52% |
+ 520.79 ms |
+ 590.85 ms |
Pg Loader |
- 0.34 |
- 2.92 s |
- ±17.97% |
- 2.92 s |
- 3.29 s |
+ 1.89 |
+ 527.72 ms |
+ ±7.17% |
+ 523.29 ms |
+ 589.90 ms |
- MyXQL Loader |
- 0.33 |
- 2.99 s |
- ±13.08% |
- 2.99 s |
- 3.26 s |
+ SQLite3 Loader |
+ 1.89 |
+ 529.12 ms |
+ ±7.67% |
+ 522.49 ms |
+ 594.22 ms |
-Comparison
+Run Time Comparison
@@ -103,29 +101,27 @@ Comparison
IPS |
Slower |
- SQLite3 Loader |
- 0.35 |
+ MyXQL Loader |
+ 1.90 |
|
Pg Loader |
- 0.34 |
- 1.04x |
+ 1.89 |
+ 1.0x |
- MyXQL Loader |
- 0.33 |
- 1.06x |
+ SQLite3 Loader |
+ 1.89 |
+ 1.0x |
-
-
__Input: Date attr__
@@ -142,36 +138,36 @@ Run Time
- Pg Loader |
- 4.61 |
- 217.08 ms |
- ±13.97% |
- 214.42 ms |
- 271.56 ms |
+ MyXQL Loader |
+ 26.37 |
+ 37.93 ms |
+ ±7.64% |
+ 37.53 ms |
+ 48.13 ms |
- MyXQL Loader |
- 4.56 |
- 219.25 ms |
- ±18.19% |
- 210.43 ms |
- 300.02 ms |
+ Pg Loader |
+ 25.98 |
+ 38.49 ms |
+ ±7.63% |
+ 38.31 ms |
+ 48.20 ms |
SQLite3 Loader |
- 4.49 |
- 222.95 ms |
- ±15.03% |
- 232.42 ms |
- 266.39 ms |
+ 25.91 |
+ 38.59 ms |
+ ±7.51% |
+ 38.46 ms |
+ 48.29 ms |
-Comparison
+Run Time Comparison
@@ -179,29 +175,27 @@ Comparison
IPS |
Slower |
- Pg Loader |
- 4.61 |
+ MyXQL Loader |
+ 26.37 |
|
- MyXQL Loader |
- 4.56 |
+ Pg Loader |
+ 25.98 |
1.01x |
SQLite3 Loader |
- 4.49 |
- 1.03x |
+ 25.91 |
+ 1.02x |
-
-
__Input: Medium 100 Thousand__
@@ -219,35 +213,35 @@ Run Time
MyXQL Loader |
- 4.53 |
- 220.75 ms |
- ±15.57% |
- 209.17 ms |
- 287.22 ms |
+ 26.27 |
+ 38.07 ms |
+ ±5.01% |
+ 38.36 ms |
+ 42.73 ms |
- Pg Loader |
- 4.40 |
- 227.35 ms |
- ±16.30% |
- 222.39 ms |
- 335.90 ms |
+ SQLite3 Loader |
+ 25.64 |
+ 39.01 ms |
+ ±5.25% |
+ 39.42 ms |
+ 43.28 ms |
- SQLite3 Loader |
- 4.35 |
- 230.09 ms |
- ±19.61% |
- 236.94 ms |
- 309.96 ms |
+ Pg Loader |
+ 25.44 |
+ 39.31 ms |
+ ±6.97% |
+ 39.50 ms |
+ 49.12 ms |
-Comparison
+Run Time Comparison
@@ -256,28 +250,26 @@ Comparison
Slower |
MyXQL Loader |
- 4.53 |
+ 26.27 |
|
- Pg Loader |
- 4.40 |
- 1.03x |
+ SQLite3 Loader |
+ 25.64 |
+ 1.02x |
- SQLite3 Loader |
- 4.35 |
- 1.04x |
+ Pg Loader |
+ 25.44 |
+ 1.03x |
-
-
__Input: Small 1 Thousand__
@@ -294,36 +286,36 @@ Run Time
- Pg Loader |
- 883.24 |
- 1.13 ms |
- ±62.88% |
- 0.93 ms |
- 2.71 ms |
+ MyXQL Loader |
+ 2.95 K |
+ 339.32 µs |
+ ±13.05% |
+ 330.33 µs |
+ 493.99 µs |
- SQLite3 Loader |
- 873.53 |
- 1.14 ms |
- ±60.06% |
- 0.92 ms |
- 2.90 ms |
+ Pg Loader |
+ 2.92 K |
+ 342.75 µs |
+ ±13.24% |
+ 332.17 µs |
+ 499.14 µs |
- MyXQL Loader |
- 862.33 |
- 1.16 ms |
- ±62.27% |
- 0.92 ms |
- 2.77 ms |
+ SQLite3 Loader |
+ 2.91 K |
+ 343.63 µs |
+ ±12.64% |
+ 330.21 µs |
+ 495.04 µs |
-Comparison
+Run Time Comparison
@@ -331,29 +323,27 @@ Comparison
IPS |
Slower |
- Pg Loader |
- 883.24 |
+ MyXQL Loader |
+ 2.95 K |
|
- SQLite3 Loader |
- 873.53 |
+ Pg Loader |
+ 2.92 K |
1.01x |
- MyXQL Loader |
- 862.33 |
- 1.02x |
+ SQLite3 Loader |
+ 2.91 K |
+ 1.01x |
-
-
__Input: Time attr__
@@ -370,36 +360,36 @@ Run Time
- SQLite3 Loader |
- 3.40 |
- 294.30 ms |
- ±15.60% |
- 281.23 ms |
- 367.65 ms |
+ MyXQL Loader |
+ 21.75 |
+ 45.98 ms |
+ ±11.17% |
+ 45.25 ms |
+ 61.90 ms |
- MyXQL Loader |
- 3.18 |
- 314.55 ms |
- ±17.11% |
- 313.35 ms |
- 415.89 ms |
+ Pg Loader |
+ 21.43 |
+ 46.67 ms |
+ ±10.90% |
+ 45.76 ms |
+ 61.66 ms |
- Pg Loader |
- 3.03 |
- 329.99 ms |
- ±16.46% |
- 321.68 ms |
- 457.42 ms |
+ SQLite3 Loader |
+ 20.72 |
+ 48.26 ms |
+ ±9.03% |
+ 48.63 ms |
+ 62.19 ms |
-Comparison
+Run Time Comparison
@@ -407,29 +397,27 @@ Comparison
IPS |
Slower |
- SQLite3 Loader |
- 3.40 |
+ MyXQL Loader |
+ 21.75 |
|
- MyXQL Loader |
- 3.18 |
- 1.07x |
+ Pg Loader |
+ 21.43 |
+ 1.01x |
- Pg Loader |
- 3.03 |
- 1.12x |
+ SQLite3 Loader |
+ 20.72 |
+ 1.05x |
-
-
__Input: UUID attr__
@@ -447,35 +435,35 @@ Run Time
SQLite3 Loader |
- 3.61 |
- 277.20 ms |
- ±16.59% |
- 266.05 ms |
- 372.08 ms |
+ 23.23 |
+ 43.06 ms |
+ ±8.19% |
+ 41.64 ms |
+ 51.14 ms |
- Pg Loader |
- 2.75 |
- 363.06 ms |
- ±14.14% |
- 382.70 ms |
- 437.37 ms |
+ MyXQL Loader |
+ 15.19 |
+ 65.81 ms |
+ ±7.56% |
+ 63.25 ms |
+ 76.27 ms |
- MyXQL Loader |
- 2.73 |
- 365.91 ms |
- ±19.81% |
- 367.23 ms |
- 515.29 ms |
+ Pg Loader |
+ 14.89 |
+ 67.14 ms |
+ ±7.74% |
+ 64.12 ms |
+ 80.65 ms |
-Comparison
+Run Time Comparison
@@ -484,25 +472,20 @@ Comparison
Slower |
SQLite3 Loader |
- 3.61 |
+ 23.23 |
|
- Pg Loader |
- 2.75 |
- 1.31x |
+ MyXQL Loader |
+ 15.19 |
+ 1.53x |
- MyXQL Loader |
- 2.73 |
- 1.32x |
+ Pg Loader |
+ 14.89 |
+ 1.56x |
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/bench/results/to_sql.md b/bench/results/to_sql.md
index c20b658..2e3bd44 100644
--- a/bench/results/to_sql.md
+++ b/bench/results/to_sql.md
@@ -1,7 +1,6 @@
+Benchmark
-# Benchmark
-
-Benchmark run from 2021-03-24 02:02:16.278354Z UTC
+Benchmark run from 2024-05-04 10:48:53.108179Z UTC
## System
@@ -10,22 +9,22 @@ Benchmark suite executing on the following system:
Operating System |
- Linux |
+ macOS |
CPU Information |
- AMD Ryzen 7 PRO 4750U with Radeon Graphics |
+ Apple M3 Max |
Number of Available Cores |
16 |
Available Memory |
- 14.92 GB |
+ 128 GB |
Elixir Version |
- 1.11.3 |
+ 1.16.2 |
Erlang Version |
- 23.2.6 |
+ 26.2.4 |
@@ -50,7 +49,6 @@ Benchmark suite executing with the following configuration:
-
__Input: Complex Query 2 Joins__
Run Time
@@ -66,36 +64,36 @@ Run Time
- MyXQL Query Builder |
- 105.28 K |
- 9.50 μs |
- ±116.92% |
- 8.66 μs |
- 24.79 μs |
+ Pg Query Builder |
+ 382.74 K |
+ 2.61 µs |
+ ±374.25% |
+ 2.38 µs |
+ 3.42 µs |
- Pg Query Builder |
- 96.97 K |
- 10.31 μs |
- ±220.90% |
- 8.66 μs |
- 26.75 μs |
+ SQLite3 Query Builder |
+ 374.17 K |
+ 2.67 µs |
+ ±382.43% |
+ 2.46 µs |
+ 3.42 µs |
- SQLite3 Query Builder |
- 90.46 K |
- 11.05 μs |
- ±204.34% |
- 8.66 μs |
- 39.53 μs |
+ MyXQL Query Builder |
+ 360.95 K |
+ 2.77 µs |
+ ±360.52% |
+ 2.54 µs |
+ 3.58 µs |
-Comparison
+Run Time Comparison
@@ -103,29 +101,27 @@ Comparison
IPS |
Slower |
- MyXQL Query Builder |
- 105.28 K |
+ Pg Query Builder |
+ 382.74 K |
|
- Pg Query Builder |
- 96.97 K |
- 1.09x |
+ SQLite3 Query Builder |
+ 374.17 K |
+ 1.02x |
- SQLite3 Query Builder |
- 90.46 K |
- 1.16x |
+ MyXQL Query Builder |
+ 360.95 K |
+ 1.06x |
-
-
__Input: Complex Query 4 Joins__
@@ -142,36 +138,36 @@ Run Time
- Pg Query Builder |
- 100.25 K |
- 9.97 μs |
- ±92.25% |
- 9.15 μs |
- 23.68 μs |
+ MyXQL Query Builder |
+ 342.45 K |
+ 2.92 µs |
+ ±313.75% |
+ 2.67 µs |
+ 4.08 µs |
- MyXQL Query Builder |
- 98.47 K |
- 10.16 μs |
- ±88.64% |
- 9.22 μs |
- 28.70 μs |
+ Pg Query Builder |
+ 340.76 K |
+ 2.93 µs |
+ ±350.68% |
+ 2.71 µs |
+ 3.88 µs |
SQLite3 Query Builder |
- 90.40 K |
- 11.06 μs |
- ±117.48% |
- 9.22 μs |
- 38.69 μs |
+ 336.08 K |
+ 2.98 µs |
+ ±328.89% |
+ 2.79 µs |
+ 3.88 µs |
-Comparison
+Run Time Comparison
@@ -179,29 +175,27 @@ Comparison
IPS |
Slower |
- Pg Query Builder |
- 100.25 K |
+ MyXQL Query Builder |
+ 342.45 K |
|
- MyXQL Query Builder |
- 98.47 K |
- 1.02x |
+ Pg Query Builder |
+ 340.76 K |
+ 1.0x |
SQLite3 Query Builder |
- 90.40 K |
- 1.11x |
+ 336.08 K |
+ 1.02x |
-
-
__Input: Fetch First Registry__
@@ -218,36 +212,36 @@ Run Time
- Pg Query Builder |
- 173.31 K |
- 5.77 μs |
- ±389.85% |
- 4.47 μs |
- 20.18 μs |
+ MyXQL Query Builder |
+ 752.12 K |
+ 1.33 µs |
+ ±868.39% |
+ 1.17 µs |
+ 1.63 µs |
- MyXQL Query Builder |
- 173.06 K |
- 5.78 μs |
- ±411.02% |
- 4.82 μs |
- 16.20 μs |
+ Pg Query Builder |
+ 721.56 K |
+ 1.39 µs |
+ ±820.83% |
+ 1.25 µs |
+ 1.67 µs |
SQLite3 Query Builder |
- 167.17 K |
- 5.98 μs |
- ±420.59% |
- 4.82 μs |
- 19.42 μs |
+ 703.84 K |
+ 1.42 µs |
+ ±817.39% |
+ 1.29 µs |
+ 1.71 µs |
-Comparison
+Run Time Comparison
@@ -255,29 +249,27 @@ Comparison
IPS |
Slower |
- Pg Query Builder |
- 173.31 K |
+ MyXQL Query Builder |
+ 752.12 K |
|
- MyXQL Query Builder |
- 173.06 K |
- 1.0x |
+ Pg Query Builder |
+ 721.56 K |
+ 1.04x |
SQLite3 Query Builder |
- 167.17 K |
- 1.04x |
+ 703.84 K |
+ 1.07x |
-
-
__Input: Fetch Last Registry__
@@ -294,36 +286,36 @@ Run Time
- Pg Query Builder |
- 177.36 K |
- 5.64 μs |
- ±446.37% |
- 4.47 μs |
- 17.67 μs |
+ MyXQL Query Builder |
+ 731.59 K |
+ 1.37 µs |
+ ±795.20% |
+ 1.21 µs |
+ 1.71 µs |
- SQLite3 Query Builder |
- 169.74 K |
- 5.89 μs |
- ±394.73% |
- 4.82 μs |
- 18.16 μs |
+ Pg Query Builder |
+ 716.25 K |
+ 1.40 µs |
+ ±814.43% |
+ 1.25 µs |
+ 1.67 µs |
- MyXQL Query Builder |
- 162.83 K |
- 6.14 μs |
- ±383.32% |
- 4.82 μs |
- 22.14 μs |
+ SQLite3 Query Builder |
+ 707.98 K |
+ 1.41 µs |
+ ±839.02% |
+ 1.25 µs |
+ 1.67 µs |
-Comparison
+Run Time Comparison
@@ -331,29 +323,27 @@ Comparison
IPS |
Slower |
- Pg Query Builder |
- 177.36 K |
+ MyXQL Query Builder |
+ 731.59 K |
|
- SQLite3 Query Builder |
- 169.74 K |
- 1.04x |
+ Pg Query Builder |
+ 716.25 K |
+ 1.02x |
- MyXQL Query Builder |
- 162.83 K |
- 1.09x |
+ SQLite3 Query Builder |
+ 707.98 K |
+ 1.03x |
-
-
__Input: Ordinary Delete All__
@@ -370,36 +360,36 @@ Run Time
- Pg Query Builder |
- 335.81 K |
- 2.98 μs |
- ±775.40% |
- 2.03 μs |
- 9.43 μs |
+ MyXQL Query Builder |
+ 1.34 M |
+ 747.69 ns |
+ ±2442.90% |
+ 666 ns |
+ 917 ns |
- SQLite3 Query Builder |
- 325.92 K |
- 3.07 μs |
- ±948.36% |
- 2.02 μs |
- 8.31 μs |
+ Pg Query Builder |
+ 1.32 M |
+ 758.40 ns |
+ ±2490.71% |
+ 667 ns |
+ 875 ns |
- MyXQL Query Builder |
- 301.67 K |
- 3.31 μs |
- ±832.06% |
- 2.03 μs |
- 11.59 μs |
+ SQLite3 Query Builder |
+ 1.31 M |
+ 762.71 ns |
+ ±2451.66% |
+ 667 ns |
+ 875 ns |
-Comparison
+Run Time Comparison
@@ -407,29 +397,27 @@ Comparison
IPS |
Slower |
- Pg Query Builder |
- 335.81 K |
+ MyXQL Query Builder |
+ 1.34 M |
|
- SQLite3 Query Builder |
- 325.92 K |
- 1.03x |
+ Pg Query Builder |
+ 1.32 M |
+ 1.01x |
- MyXQL Query Builder |
- 301.67 K |
- 1.11x |
+ SQLite3 Query Builder |
+ 1.31 M |
+ 1.02x |
-
-
__Input: Ordinary Order By__
@@ -446,36 +434,36 @@ Run Time
- Pg Query Builder |
- 186.48 K |
- 5.36 μs |
- ±400.39% |
- 4.40 μs |
- 17.81 μs |
+ MyXQL Query Builder |
+ 742.88 K |
+ 1.35 µs |
+ ±918.40% |
+ 1.17 µs |
+ 1.67 µs |
- MyXQL Query Builder |
- 182.02 K |
- 5.49 μs |
- ±402.64% |
- 4.40 μs |
- 17.39 μs |
+ Pg Query Builder |
+ 729.59 K |
+ 1.37 µs |
+ ±913.47% |
+ 1.21 µs |
+ 1.58 µs |
SQLite3 Query Builder |
- 172.19 K |
- 5.81 μs |
- ±427.38% |
- 4.47 μs |
- 21.44 μs |
+ 721.11 K |
+ 1.39 µs |
+ ±918.31% |
+ 1.21 µs |
+ 1.58 µs |
-Comparison
+Run Time Comparison
@@ -483,29 +471,27 @@ Comparison
IPS |
Slower |
- Pg Query Builder |
- 186.48 K |
+ MyXQL Query Builder |
+ 742.88 K |
|
- MyXQL Query Builder |
- 182.02 K |
+ Pg Query Builder |
+ 729.59 K |
1.02x |
SQLite3 Query Builder |
- 172.19 K |
- 1.08x |
+ 721.11 K |
+ 1.03x |
-
-
__Input: Ordinary Select All__
@@ -522,36 +508,36 @@ Run Time
- Pg Query Builder |
- 200.19 K |
- 5.00 μs |
- ±657.77% |
- 3.49 μs |
- 14.88 μs |
+ MyXQL Query Builder |
+ 838.25 K |
+ 1.19 µs |
+ ±1122.54% |
+ 1.04 µs |
+ 1.46 µs |
- SQLite3 Query Builder |
- 199.77 K |
- 5.01 μs |
- ±698.35% |
- 3.49 μs |
- 13.90 μs |
+ Pg Query Builder |
+ 822.53 K |
+ 1.22 µs |
+ ±1179.00% |
+ 1.08 µs |
+ 1.38 µs |
- MyXQL Query Builder |
- 191.70 K |
- 5.22 μs |
- ±601.95% |
- 3.56 μs |
- 16.06 μs |
+ SQLite3 Query Builder |
+ 809.74 K |
+ 1.23 µs |
+ ±1198.22% |
+ 1.08 µs |
+ 1.42 µs |
-Comparison
+Run Time Comparison
@@ -559,20 +545,20 @@ Comparison
IPS |
Slower |
- Pg Query Builder |
- 200.19 K |
+ MyXQL Query Builder |
+ 838.25 K |
|
- SQLite3 Query Builder |
- 199.77 K |
- 1.0x |
+ Pg Query Builder |
+ 822.53 K |
+ 1.02x |
- MyXQL Query Builder |
- 191.70 K |
+ SQLite3 Query Builder |
+ 809.74 K |
1.04x |
@@ -580,8 +566,6 @@ Comparison
-
-
__Input: Ordinary Update All__
@@ -598,36 +582,36 @@ Run Time
- SQLite3 Query Builder |
- 263.35 K |
- 3.80 μs |
- ±1304.70% |
- 2.86 μs |
- 10.13 μs |
+ MyXQL Query Builder |
+ 1.03 M |
+ 971.15 ns |
+ ±1801.37% |
+ 834 ns |
+ 1167 ns |
- MyXQL Query Builder |
- 260.96 K |
- 3.83 μs |
- ±760.59% |
- 2.86 μs |
- 10.20 μs |
+ Pg Query Builder |
+ 1.01 M |
+ 990.87 ns |
+ ±1533.42% |
+ 875 ns |
+ 1125 ns |
- Pg Query Builder |
- 249.05 K |
- 4.02 μs |
- ±827.04% |
- 2.86 μs |
- 12.99 μs |
+ SQLite3 Query Builder |
+ 1.00 M |
+ 999.05 ns |
+ ±1416.75% |
+ 875 ns |
+ 1166 ns |
-Comparison
+Run Time Comparison
@@ -635,29 +619,27 @@ Comparison
IPS |
Slower |
- SQLite3 Query Builder |
- 263.35 K |
+ MyXQL Query Builder |
+ 1.03 M |
|
- MyXQL Query Builder |
- 260.96 K |
- 1.01x |
+ Pg Query Builder |
+ 1.01 M |
+ 1.02x |
- Pg Query Builder |
- 249.05 K |
- 1.06x |
+ SQLite3 Query Builder |
+ 1.00 M |
+ 1.03x |
-
-
__Input: Ordinary Where__
@@ -675,35 +657,35 @@ Run Time
MyXQL Query Builder |
- 162.26 K |
- 6.16 μs |
- ±343.86% |
- 5.31 μs |
- 17.74 μs |
+ 579.57 K |
+ 1.73 µs |
+ ±668.48% |
+ 1.54 µs |
+ 2.17 µs |
- SQLite3 Query Builder |
- 159.31 K |
- 6.28 μs |
- ±305.50% |
- 5.38 μs |
- 19.35 μs |
+ Pg Query Builder |
+ 574.41 K |
+ 1.74 µs |
+ ±631.02% |
+ 1.58 µs |
+ 2.13 µs |
- Pg Query Builder |
- 154.28 K |
- 6.48 μs |
- ±355.38% |
- 5.45 μs |
- 20.04 μs |
+ SQLite3 Query Builder |
+ 568.60 K |
+ 1.76 µs |
+ ±635.93% |
+ 1.62 µs |
+ 2.13 µs |
-Comparison
+Run Time Comparison
@@ -712,25 +694,20 @@ Comparison
Slower |
MyXQL Query Builder |
- 162.26 K |
+ 579.57 K |
|
- SQLite3 Query Builder |
- 159.31 K |
- 1.02x |
+ Pg Query Builder |
+ 574.41 K |
+ 1.01x |
- Pg Query Builder |
- 154.28 K |
- 1.05x |
+ SQLite3 Query Builder |
+ 568.60 K |
+ 1.02x |
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/lib/ecto/adapters/sqlite3/codec.ex b/lib/ecto/adapters/sqlite3/codec.ex
index bc95e46..3cd5375 100644
--- a/lib/ecto/adapters/sqlite3/codec.ex
+++ b/lib/ecto/adapters/sqlite3/codec.ex
@@ -79,6 +79,10 @@ defmodule Ecto.Adapters.SQLite3.Codec do
def time_decode(nil), do: {:ok, nil}
+ def time_decode(%Time{} = value) do
+ {:ok, value}
+ end
+
def time_decode(value) do
case Time.from_iso8601(value) do
{:ok, _time} = result -> result
diff --git a/test/ecto/adapters/sqlite3/codec_test.exs b/test/ecto/adapters/sqlite3/codec_test.exs
index 0bed3d6..b1485e7 100644
--- a/test/ecto/adapters/sqlite3/codec_test.exs
+++ b/test/ecto/adapters/sqlite3/codec_test.exs
@@ -116,6 +116,11 @@ defmodule Ecto.Adapters.SQLite3.CodecTest do
{:ok, time} = Time.from_iso8601("23:50:07.123Z")
assert {:ok, ^time} = Codec.time_decode("23:50:07.123Z")
end
+
+ test "struct" do
+ time = ~T[10:28:14.748721]
+ assert {:ok, ^time} = Codec.time_decode(time)
+ end
end
describe ".utc_datetime_decode/1" do