Christopherのブック
(9 keywords)

よく使われているタグ

最新日記

RSS
  • 日記はまだありません

Christopherのお気に入り

  • mare1983のブック mare1983のブック
  • akkun_choi pedia akkun_choi pedia
  • アニプラのブック アニプラのブック
  • すぎたんのブック すぎたんのブック

Christopherのブックのメンバー

  • akkun_choi akkun_choi
  • 西小倉パンデイロ 西小倉パンデイロ
  • 里香 里香
  • Christopher Christopher
 

mb_substr

2pt

http://mindia.jp/book/akkun/title/mb_substr

PHPの実装を読んでないけど、実験結果とマルチバイト文字の性質からから推測。

asciiのみの文字列の時は1文字1byteを想定しているので、先頭からn文字目を参照する時は先頭からn byte目を参照すればいい。

でもmb_*で扱う文字列の場合、1文字が1〜6byteと可変(shift-jis及びeucは2byte、日本語UTF-8は3byte、全言語UTF-8ならら2〜6)なので、先頭からn文字目を参照する時に何byte先を参照したらいいか分からない。そのため先頭から1文字ずつ読んでいってn文字目を探す必要があり、nに比例した時間がかかってしまう。(asciiのみの場合はnが大きくても時間は変わらない)

以上より、substrの時はNに比例した時間になり、mb_substrの時は部分文字列の先頭の位置を探し出すのにNに比例する時間がかかり、それをさらにN回実行しているのでN^2に比例した時間になっているのだと思われます。

「mb_substr」について友人に書いてもらう。

あなたにとって「mb_substr」とは?

ログインするとワンクリックでキーワードを投稿できます

ログインする 新規登録する

お気に入りの説明

0 pt
これするとなかなか終わらない。 mb_substr が遅すぎる? <?php $string = file_get_contents('big.txt'); // 12MBぐらいのデータ $len = mb_strlen($string); for ($i = 0; $i < $len; $i++)...
もっと読む

関連したキーワードを持つお気に入り

他の人の「mb_substr」を見る