時計を壊せスマートフォン用の表示で見る時計を壊せ駆け出してからそこそこ経ったWebプログラマーの雑記2014-04-03Time::Strptime進捗perl頭を悩ませながらのんびり作ってます。perlによる実装です。epochとoffsetだけを返すシンプルな機能を持っています。codeを文字列として構築してevalする事により条件分岐の回数などを極限まで減らし高速な動作を実現しています。最近の変更timezoneサポートを実装しました具体的には%Z/%zを環境依存*1でparse出来るようになりました。この変更に伴い、offsetを返すようになりました。parseした文字列のtimezone/offset、あるいは現在のtimezoneからoffsetを計算し、返します。offsetの計算にはTime::TZOffsetが利用出きるケースではTime::TZOffsetを利用し、そうでないケースではTime::Localを利用しています。localeサポートを実装しました具体的には%b/%aがparse出来るようになりました。Encode::LocaleとPOSIX::strftimeを使って動的に組み立てるというカッコイイことをしています。*2ベンチマークスクリプトを更新しましたhttps://github.com/karupanerura/Time-Strptime/blob/master/author/benchmark.plTime::Pieceのインスタンスをキャッシュしてstrptimeするケースと、キャッシュしないケースを分けました。テストも同時に実行しており、同じ結果を返すケースでのベンチマークである事がちゃんと分かるようになっています。GMT/UTCにおいて、Time::Pieceのインスタンスをキャッシュしないケースより45%程度高速というベンチマーク結果となっております。tpがTime::Piece、dtがDateTime、tsがTime::Strptime(本モジュール)です。--1..4TODOリファクタリングスキマ時間でえいやと実装を進めてしまいがちで、カオスになってきたので整理する。テストケースの追加なんか微妙なバグを拾いきれてないきがするのでテストを整える。他の実装のstrptimeを見てみて必要があらば実装する。ドキュメンテーションサポートしているformatの説明と形式、localeの変更のしかたなどを説明する。リリースhttps://github.com/chansen/p5-time-moment/issues/4#issuecomment-36947533有益っぽいのではやくリリースしたい。XSによる高速化Time::Localの実行が遅いので互換制のあるインターフェースでXS版を書いてみる。XS実装の作成libcのstrptimeだと%z/%Zがparse出来ないので、結構頑張る必要がある。あたりからいい感じにモジュール化して別のpackageで出してそれに依存させる。Entries最近の人気記事Archiveはてなブログをはじめよう!karupaneruraさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。