> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-en/sdks/backend-sdk/ine/release_notes/1.5.0_release_notes.md).

# 1.5.0

This version updates the biometric engine: it adds support for JPEG 2000 images and response time has been reduced, improving service performance.

## Engine improvements from version 1.2.0 to 1.5.0

* Significant improvements in processing speed and robustness, allowing operation with lower-resolution images, cropped images, automatic image rotation, etc.
* The Docker image size has been reduced considerably, going from **1.15GB** to **211MB**.
* Docker vulnerabilities fixed.

## Comparison between version 1.2.0 and 1.5.0

The tests were run on a 16-core AWS machine, **using only 8 cores** to ensure that no other process affected the comparison.

The service's Docker container was run on that machine and K6 was used to perform tests of **Load** (load), **Stress** (stress) and **Spike** (spike).

Configuration:

* Environment variable `FACEPHI_SELPHID_FACIALEXTRACTOR_NUM_THREADS=4`.
* In the file `config.json`, `"number_of_threads": 2`.

Summary:

* Version **1.5.0** represents a significant performance improvement over 1.2.0 in all test types.
* Average latency in the load test was reduced by a **37%**, throughput increased by a **53%** in the same test, and the p(95) percentiles improved steadily.
* Neither version reported HTTP errors.

![](/files/d2ea0037271c8e24aa2ac45f75c71d69c5ab3c35)

### Load test table (Load test)

2 VUs in a loop for 15 minutes.

| Metrics          | v1.2.0      | v1.5.0      | Δ       |
| ---------------- | ----------- | ----------- | ------- |
| Average latency  | 813.68 ms   | 511.41 ms   | −37.2 % |
| Min              | 566.70 ms   | 420.47 ms   | −25.8 % |
| Median           | 808.75 ms   | 510.31 ms   | −36.9 % |
| p(90)            | 839.83 ms   | 547.41 ms   | −34.8 % |
| p(95)            | 843.65 ms   | 559.02 ms   | −33.7 % |
| Max              | 994.11 ms   | 678.97 ms   | −31.7 % |
| Total iterations | 2 079       | 3 177       | +52.8 % |
| Performance      | 2.31 iter/s | 3.53 iter/s | +52.8 % |
| HTTP errors      | 0.00 %      | 0.00 %      | —       |

### Stress test table (Stress test)

Up to 4 VUs ramping for 8 min (4 stages).

| Metrics          | v1.2.0      | v1.5.0      | Δ       |
| ---------------- | ----------- | ----------- | ------- |
| Average latency  | 773.35 ms   | 654.23 ms   | −15.4 % |
| Min              | 424.49 ms   | 361.91 ms   | −14.7 % |
| Median           | 584.56 ms   | 540.95 ms   | −7.5 %  |
| p(90)            | 1 250 ms    | 994 ms      | −20.5 % |
| p(95)            | 1 800 ms    | 1 020 ms    | −43.3 % |
| Max              | 1 990 ms    | 1 110 ms    | −44.2 % |
| Total iterations | 1 376       | 1 607       | +16.8 % |
| Performance      | 2.86 iter/s | 3.34 iter/s | +16.8 % |
| HTTP errors      | 0.00 %      | 0.00 %      | —       |

{% hint style="info" %}
The most notable improvement under stress occurs at the extremes: p(95) drops by 780 ms and the maximum decreases by nearly 44%. This indicates that version 1.5.0 handles concurrency spikes better.
{% endhint %}

### Spike test table (Spike test)

Up to 4 VUs in an aggressive ramp for 1 min 40 s (3 stages).

| Metrics          | v1.2.0      | v1.5.0      | Δ       |
| ---------------- | ----------- | ----------- | ------- |
| Average latency  | 1 090 ms    | 913.82 ms   | −16.2 % |
| Min              | 440.28 ms   | 362.44 ms   | −17.7 % |
| Median           | 715.47 ms   | 854.49 ms   | +19.4 % |
| p(90)            | 1 890 ms    | 1 430 ms    | −24.3 % |
| p(95)            | 1 910 ms    | 1 490 ms    | −22.0 % |
| Max              | 1 960 ms    | 1 610 ms    | −17.9 % |
| Total iterations | 305         | 363         | +19.0 % |
| Performance      | 3.03 iter/s | 3.61 iter/s | +19.1 % |
| HTTP errors      | 0.00 %      | 0.00 %      | —       |

{% hint style="warning" %}
Median latency increases in the 1.5.0 spike test (715 ms → 854 ms). Although the high percentiles improve, the central distribution worsens slightly under peak load.
{% endhint %}

### Overall comparative summary

| Type   | Average 1.2.0 | Average 1.5.0 | p(95) 1.2.0 | p(95) 1.5.0 | RPS 1.2.0 | RPS 1.5.0 |
| ------ | ------------- | ------------- | ----------- | ----------- | --------- | --------- |
| Load   | 813 ms        | 511 ms        | 843 ms      | 559 ms      | 2.31      | 3.53      |
| Stress | 773 ms        | 654 ms        | 1 800 ms    | 1 020 ms    | 2.86      | 3.34      |
| Spike  | 1 090 ms      | 914 ms        | 1 910 ms    | 1 490 ms    | 3.03      | 3.61      |
