Přeskočit obsah

Výkon jazyka SP-Lang¤

Úvod¤

SP-Lang je navržen tak, aby poskytoval velmi vysoký výkon.

Interně kompiluje poskytnuté výrazy do strojového kódu pomocí LLVM IR a velkého stupně optimalizací, které jsou možné díky funkcionální struktuře jazyka. Nabízí extrémně vysokou propustnost jednoho jádra procesoru s bezproblémovou schopností škálovat zpracování podle dostupných jader procesoru a plně využívat výhod moderních architektur procesorů.

Výkonnostní testy měří propustnost v EPS, událostech za sekundu. Události za sekundu je termín používaný ve správě IT pro definici počtu událostí, které jsou zpracovány výrazem SP-Lang za jednu sekundu. EPS se měří pro jedno jádro procesoru.

Výkonnostní testy jsou automatizovány pomocí rámce CI/CD, a proto jsou zcela reprodukovatelné.

Porovnávání více řetězců¤

Tento výraz vyhledává prvky konečné množiny řetězců ve vstupním textu. Hodí se např. pro klasifikaci škodlivých adres URL (poskytnutých blokovým seznamem) ve výstupu firewallu.

!IN
  where: !ARG url
  what:
  - ".000a.biz"
  - ".001edizioni.com"
 < 64 domains in total >
  - ".2win-tech.com"
  - ".2zzz.ru"
Tento seznam poskytuje projekt blackweb.

  • Jádro jednoho procesoru na HW-M1-20: 1423686 EPS
  • Jedno jádro CPU na HW-I7-15: 807685 EPS

Parsování JSON¤

!JSON.PARSE
what: |
  {
    &lt; https://github.com/TeskaLabs/cysimdjson/blob/main/perftest/jsonexamples/test.json &gt;
  }

Poznámka

Rychlé parsování JSON je zajištěno projekty cysimdjson, resp. simdjson._.

  • Jedno jádro procesoru na HW-M1-20: 968502 EPS
  • Jedno jádro CPU na HW-I7-15: 562862 EPS

Parsování IETF Syslogu¤

Toto je parser IETF Syslog aka RFC5424 implementovaný v SP-Langu:

# Hlavička
- !PARSE.EXACTLY {what: '<'}
- !PARSE.DIGITS
- !PARSE.EXACTLY {what: '>'}
- !PARSE.DIGITS
- !PARSE.EXACTLY {what: ' '}

- !PARSE.TUPLE # Časové razítko
  - !PARSE.DIGITS # Rok
  - !PARSE.EXACTLY {what: '-'}
  - !PARSE.DIGITS # Měsíc
  - !PARSE.EXACTLY {what: '-'}
  - !PARSE.DIGITS # Den
  - !PARSE.EXACTLY {what: 'T'}
  - !PARSE.DIGITS # Hodiny
  - !PARSE.EXACTLY {what: ':'}
  - !PARSE.DIGITS # Minuty
  - !PARSE.EXACTLY {what: ':'}
  - !PARSE.DIGITS # Sekundy
  - !PARSE.EXACTLY {what: '.'}
  - !PARSE.DIGITS # Subsekundy
  - !PARSE.EXACTLY {what: 'Z'}

- !PARSE.EXACTLY {what: ' '} # HOSTNAME
- !PARSE.UNTIL {what: ' '}

- !PARSE.EXACTLY {what: ' '} # APP-NAME
- !PARSE.UNTIL {what: ' '}

- !PARSE.EXACTLY {what: ' '} # PROCID
- !PARSE.UNTIL {what: ' '}

- !PARSE.EXACTLY {what: ' '} # MSGID
- !PARSE.UNTIL {what: ' '}

- !PARSE.EXACTLY {what: ' '} # STRUCTURED-DATA
- !PARSE.OPTIONAL
  what: !PARSE.TUPLE
    - !PARSE.EXACTLY {what: '['}
    - !PARSE.UNTIL {what: ' '} # SD-ID
    - !PARSE.REPEAT  
      what:
      !PARSE.TUPLE # SD-PARAM
      - !PARSE.EXACTLY {what: ' '}
      - !PARSE.UNTIL {what: '='} # PARAM-NAME
      - !PARSE.EXACTLY {what: '='}
      - !PARSE.BETWEEN 
         what: '"'
         escaped: '\\"]'

  • Jádro jednoho procesoru na HW-M1-20: 304004 EPS
  • Jedno jádro CPU na HW-I7-15: 181494 EPS

Referenční hardware¤

HW-M1-20¤

  • Stroj: MacBook Air (M1, 2020)
  • CPU: Apple M1, uveden na trh v roce 2020

HW-I7-15¤

  • Stroj: MacBook Pro (15palcový, 2016)
  • CPU: I7-6700HQ, uveden na trh v roce 2015.