Skip to content

Conversation

BelaPfeffer
Copy link

@BelaPfeffer BelaPfeffer commented May 13, 2025

Description

We tired to speed up the toNative method in the XMLHandler.
Therefore we changed the implementation of appendASCII. It now uses SIMDe to process the Input in a Block of 8 chars at a time.
We added two three new methods to the StringManager Class
1.)int StringManager::strLength(const XMLCh* input_ptr)
This method uses SIMDe commands to determine the length of a Xerces String by finding the 0 iterator
2.)void StringManager::compress64(const XMLCh* inputIt, char* outputIt)
This method helps the appendASCII method to compress 8 UTF 16 char at a time down to ASCII chars also using SIMDe
3.)bool StringManager::isASCII(const XMLCh* chars, const XMLSize_t length)
This Method determines whether or not an Input is ASCII convertible or not by checking the upper bytes of a UTF 16 char.
Underlying logic : very UTF -16 char with two zeros as upper bits is ASCII convertible.

We added a XMLHandler_test where all the new methods and implementations are tested

Remaining Problems:
Remaining Problems and Benchmarks of the Project are in the pdf in the appendix
Benchmarks.pdf

Checklist

  • Make sure that you are listed in the AUTHORS file
  • Add relevant changes and new features to the CHANGELOG file
  • I have commented my code, particularly in hard-to-understand areas
  • New and existing unit tests pass locally with my changes
  • Updated or added python bindings for changed or new classes (Tick if no updates were necessary.)

How can I get additional information on failed tests during CI

Click to expand If your PR is failing you can check out
  • The details of the action statuses at the end of the PR or the "Checks" tab.
  • http://cdash.seqan.de/index.php?project=OpenMS and look for your PR. Use the "Show filters" capability on the top right to search for your PR number.
    If you click in the column that lists the failed tests you will get detailed error messages.

Advanced commands (admins / reviewer only)

Click to expand
  • /reformat (experimental) applies the clang-format style changes as additional commit. Note: your branch must have a different name (e.g., yourrepo:feature/XYZ) than the receiving branch (e.g., OpenMS:develop). Otherwise, reformat fails to push.
  • setting the label "NoJenkins" will skip tests for this PR on jenkins (saves resources e.g., on edits that do not affect tests)
  • commenting with rebuild jenkins will retrigger Jenkins-based CI builds

⚠️ Note: Once you opened a PR try to minimize the number of pushes to it as every push will trigger CI (automated builds and test) and is rather heavy on our infrastructure (e.g., if several pushes per day are performed).

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.

2 participants