タグ

qiitaとstringsに関するnabinnoのブックマーク (2)

  • なぜGo言語の正規表現は遅いと言われるの? - Qiita

    はじめに Goの正規表現は遅いと言われていることが以前から疑問だったので調査してみました。 こちらの記事やこちらの記事を拝見する限り ① 現実的なユースケース(例えばURLのパースなど)ではGo言語の正規表現は使うべきではなく、stringsパッケージの標準の関数を利用した方がパフォーマンスとしては良い。 ② Go言語で正規表現を利用するために必要な"正規表現オブジェクト"を並行にアクセスするにはパフォーマンスが問題になるので注意が必要。 とあります。その理由は、それぞれ以下に集約できるようです。 ① Go言語標準の正規表現ライブラリは、正規表現と検査文字列の長さに対して常に$O(n^2)$のオーダーで計算量が増加する安定したアルゴリズムを採用している。 ② "正規表現オブジェクト"を用いたマッチング処理には排他制御が行われている。 調べてみる Go言語のpkg/regexpの公式ドキュメ

    なぜGo言語の正規表現は遅いと言われるの? - Qiita
  • Goで文字列の中の特定の文字列をカウントする(strings.Count) - Qiita

    使い方 Count counts the number of non-overlapping instances of substr in s. If substr is an empty string, Count returns 1 + the number of Unicode code points in s. 引用元: strings - The Go Programming Language 引数 第1引数:カウント対象が含まれている全体の文字列 第2引数:カウント対象の文字列(これが何個第1引数の文字列の中に入っているかをカウントする) Countは、第1引数の文字列の中の第2引数の文字列の重複しない数を返す。 第2引数が空文字の場合、Countは1 + 第2引数の文字列のUnicode code pointsの数を返す。 実際に使ってみた コード package main

    Goで文字列の中の特定の文字列をカウントする(strings.Count) - Qiita
  • 1