Skip to content

Add ifds runner for ets#276

Merged
CaelmBleidd merged 19 commits into
mainfrom
mforest/ets-ifds-runner
May 22, 2025
Merged

Add ifds runner for ets#276
CaelmBleidd merged 19 commits into
mainfrom
mforest/ets-ifds-runner

Conversation

@MForest7
Copy link
Copy Markdown
Collaborator

@MForest7 MForest7 commented May 12, 2025

Add ets-specific IFDS runner. The purpose is to support dynamic calls and (maybe) def-use chains, both need ifds modifications. Also get some performance increase (split path edges storage).

Performance before:

project stmts min time max time avg time median time new inferred types (%)
project1 9914 2.7s 3.2s 2.9s 2.9s 37
project2 26679 3.4s 4.2s 3.7s 3.5s 15
project3 4272 1.2s 1.3s 1.3s 1.3s 29
project4 4584 0.8s 0.9s 0.8s 0.8s 37
project5 121091 70.8s 80.3s 76.9s 78.7s 36
project6 28548 6.6s 6.8s 6.7s 6.7s 38
project7 5162 0.7s 1.1s 0.9s 0.9s 29

After:

project stmts min time max time avg time median time new inferred types (%)
project1 9914 1.1s 1.6s 1.4s 1.4s 36.6
project2 26679 1.2s 1.3s 1.2s 1.2s 15.0
project3 4272 0.5s 0.6s 0.5s 0.5s 29.0
project4 4584 0.3s 0.4s 0.4s 0.4s 36.0
project5 121091 25.8s 37.6s 29.9s 27.2s 35.0
project6 28548 3.1s 3.9s 3.5s 3.3s 36.1
project7 5162 0.5s 0.7s 0.5s 0.5s 28.2

Changes (median time):

project before after decrease
project1 2.9s 1.4s ~50%
project2 3.5s 1.2s ~60%
project3 1.3s 0.5s ~60%
project4 0.8s 0.4s ~50%
project5 78.7s 27.2s ~60%
project6 6.7s 3.3s ~40%
project7 0.9s 0.5s ~40%

@MForest7 MForest7 requested review from CaelmBleidd and Lipen May 12, 2025 12:49
@MForest7 MForest7 requested a review from Lipen May 13, 2025 12:35
Comment thread usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/infer/TypeInferenceManager.kt Dismissed
Comment thread usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/infer/TypeInferenceManager.kt Dismissed
@MForest7 MForest7 requested a review from CaelmBleidd May 13, 2025 14:36
@Lipen
Copy link
Copy Markdown
Member

Lipen commented May 13, 2025

@MForest7 Please, use at most 1 digit after the floating point. 1.6 looks better than 1.654s. I bet you have at most 2 significant digits in your measurements, but overall it is OK to just round all small values (0.1 to 10) to 1 floating digit (like 0.7s or 2.4s), and all larger numbers to integers (30s, 100s).

@MForest7 MForest7 force-pushed the mforest/ets-ifds-runner branch from a42cb2c to b87ea78 Compare May 13, 2025 16:27
@MForest7 MForest7 force-pushed the mforest/ets-ifds-runner branch from ea57576 to cd039b3 Compare May 20, 2025 08:25
Comment thread usvm-ts-dataflow/src/main/kotlin/org/usvm/dataflow/ts/ifds/EtsIfdsSourceRunner.kt Dismissed
Copy link
Copy Markdown
Member

@Lipen Lipen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK

@CaelmBleidd CaelmBleidd merged commit b9aa62b into main May 22, 2025
6 checks passed
@CaelmBleidd CaelmBleidd deleted the mforest/ets-ifds-runner branch May 22, 2025 11:49
Saloed pushed a commit that referenced this pull request Jun 2, 2025
---------

Co-authored-by: Konstantin Chukharev <lipen00@gmail.com>
Co-authored-by: Alexey Menshutin <alex.menshutin99@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants