-
Notifications
You must be signed in to change notification settings - Fork 163
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
メモリプールを使ってファイル読み込み時のメモリ確保を高速化 #312
Conversation
テストに使ったファイル : test.zip |
PR でライセンスに関する言及がないですね。 |
外部ライブラリの置き場はそれがサードパーティであることが分かる場所にしたいです。 sakura_core 自体をサクラエディタオリジナルコードを収める場所と捉えて(現状そうでないものも混じっているのですが、それは今後整理したい)、プロジェクト直下に lib みたいなフォルダを作ってそこに外部ライブラリ系はファイルコピーまたは submodule 参照で入れるのが良いのではないかな、というのが自分のアイデアです。 あと、細かいところですが MemoryPool.h が memorypool.h という名前でコミットされているのは意図的ですか? また、MemoryPool.tcc はこの PR では使われてないですね。使われていないファイルも含めてコピーするか否かの判断についてはどう考えましょうか?>ALL 個人的にはケースバイケースだと思いますが今回のようなケースでは(ファイルコピーの策をとる場合には)使うファイルだけコピー、およびライセンスファイルがあればそれも含める、が良いと思います。 |
@kobake レビューありがとうございます。
そうですね。当初 外部ライブラリの置き場をどこか決めてもらえればそこから #include するように変更します。
意図はしていなかった筈です。何故か小文字に変ってしまってますね…。
MemoryPool.tcc は memorypool.h の 97行目で #include されています。
それで良いと思います。なお取得元のリポジトリにライセンスファイルは無いです。 sakura-editor/management-forum#20 でまだ結論が出ていませんが、外部ライブラリを使わない方針になったら同等のメモリプール処理を別途記述するようにします。 |
あ、ほんとですね。把握です。失礼しました。
個人的には だいたい以下のようなイメージを抱いています。
みたいですね……。まぁ今回は置くとしたら README あたりで。 これの結論は待っててもしゃあないので待たずに進めちゃっていいです。 |
ちなみに自分は VC++ プロジェクトで外部ライブラリ利用するときは最近は NuGet 経由で取り込むことが多いのですが、NuGet パッケージが提供されていないライブラリについては自分のほうで勝手に代理パッケージングしちゃったりしてます。 https://www.nuget.org/profiles/kobake MemoryPool についても将来的には NuGet パッケージングしちゃおうかな~と思っていたり。(今後気が向いたときにでも) |
取り込む方向で話が進んでいるようでw これgithubで公開されているものだからサブモジュール化できますけど、 |
まぁ、取り込みについてはまだ結論出て無くてグレーってことで目をつぶってくださいな ;) たぶん一番楽なのは、
っていう流れがやりやすいかと。一発の PR で一気に理想にもっていこうとすると難航するので段階を踏むのが良いです。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
外部ライブラリ取り込みOKで進める感じなので内容をチェックしました。
全体で問題ないと思います。
このあとフォルダ構成の変更が入ると思うので、変更箇所周辺で気になった点にコメントします。
@@ -90,6 +91,7 @@ class CDocLineMgr{ | |||
CDocLine* m_pDocLineTop; //!< 最初の行 | |||
CDocLine* m_pDocLineBot; //!< 最後の行(※1行しかない場合はm_pDocLineTopと等しくなる) | |||
CLogicInt m_nLines; //!< 全行数 | |||
MemoryPool<CDocLine> m_memoryPool; | |||
|
|||
public: | |||
//$$ kobake注: 以下、絶対に切り離したい(最低切り離せなくても、変数の意味をコメントで明確に記すべき)変数群 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
昔から気になっていたんですがこういうコメントどうします? To: @kobake さん
「優先度を付けて対応」だと仕事っぽくてイヤですよね・・・
完全に別件なんですがどなたか issue 立てていただけると嬉しいです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
んまぁなんでもかんでも Issue にする必要はないかなぁ、と。
気が向いた人(自分も含む)が気づいたときに気が向いたときに対応、で良いんじゃないですかね。美学の話まで Issue に持ち込むと Issue 多くなりすぎて疲れそうです。
@@ -612,7 +612,7 @@ CLayout* CLayoutMgr::DeleteLayoutAsLogical( | |||
DEBUG_TRACE( _T("バグバグ\n") ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
おそらく assert_warning(false && _T("バグバグ\n"));
を意図するコードと思われます。
こういうのは気付いた時点で対応を検討していくのがベターだと思うんですがどうでしょう?
これまた完全に別件なのでどなたか issue を立てていただけると嬉しいです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
僕の場合だと「気づいた時点で気が向いたら Issue すっ飛ばして対応しちゃって PR 飛ばし」ますね。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
では今回は気が向かないのでスルーでw
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
「気が向いた人がやる」、それがOSSの文化!
あ、 ただ、既存コードの置かれ方が extmodule 直下への cpp, h の直置きになってますが、README や LICENSE 配置の都合を考えると extmodule (に置くとしたら) 配下にサブフォルダ作って、そこに諸々置くのが好ましいと思います。 |
本家で更新かあったときの追従が楽、および外部ソースというのが明確になるという点で |
https://github.com/cacay/MemoryPool#this-repository-is-no-longer-maintained という事なので submodule にしないで良いと思います。 |
このPRは風化しつつあるので Close します。 |
下記のメモリプールライブラリを使ってファイル読み込みを高速化しました。
https://github.com/cacay/MemoryPool
a\r\n という行が 16777216行連続している 48MB のファイルを読み込む時間が 7.5 秒から 5.8 秒になりました。