scieditor2 09 version 15
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
scieditor2 09
190918
# 手直しもろもろ
## シンチラからの行取得
## api比較 ~ シンチラからの行取得
- ①QScintilla と ②QScintillaBase の api 速度比較
シンチラから特定の行の文字列をもらう関数について、①は使い方がよくわからなかったので従来は②でやってた
①は基本②のラッパだから速度は遅いはずだし
しかし②を非効率なコードで呼んでいれば①の方が速い可能性もある
- 2M以上の比較的大きめのファイルで実験した結果だが
①0.25秒②0.45秒
①の方が早い!!(゚Д゚)(゚Д゚)(゚Д゚)(゚Д゚)
俺のコードが非効率だったんだな・・・
- ②はc++ベースでわかりやすいけどpythonからは使いづらい
文字列を取得する際もまず行の長さを取得してその分のバッファを確保してからもらいに行く
バッファ確保のために ctypes を使っていた
①だと一つの関数で取得した文字列のポインタが簡単に帰ってきて、凄く簡単でpythonライク
**こんな簡単な①の方がしかも速いとは・・**
②で書いた私のコードがダメダメだったんだなあ・・・・
きちんと動いてはいたんだけど
がっかりでしたが、まあ、改善されたって事で
## tabChanged
- try でエラー回避して落ちないようにしている部分のエラーメッセを全て表示しようと思い箇所をチェックしていて見つけた
- タブを閉じて無くなったときの動作をtryでエラー回避してたが、タブカウントがゼロなら何もせずに戻るように書き換えた
- try を覚えて何でもここに逃げてた時期があった。解決は簡単だったのに。コードを後で見直すとこういう発見が随所にあるのかもしれないなあ
## QtreeWidget に model をセットする実験
- **できませんでした ┐('д')┌**
- アウトラインのビューはいろいろ使い勝手が良いのでモデルを差し替えて使いたかった、View のように
もともとWidgetはviewの派生だから可能だと思ったが、modelは持ってるもののWidgetに固有のようで、差し替えはできないようです。
残念、やはりwidgetをviewに変更しなくてはいけませんな
---
190919
# アウトライン解析ルーチンの移動
- ずっと課題にしていて手をつけられずにいたけどやっとできた
長いこと構想を練っていたためか日中codingして家で実装したらほぼ予定通り動いてくれた (・∀・)ノ
1. TreeWidget を designer で TreeView に差し替え
これは簡単にできる。多分もとのクラスが同じだと良いんだと思う
レイアウトを変える必要も無いので楽
2. 解析ルーチンをシンチラの派生クラスに移してmodelをクラスで保存
タブ切替時に都度再解析してたけどmodelを差し替えるだけにして高速化
3. 行単位検索もTreeWidget を使ってたので書き換え
4. その他細かい書き換えと、ついでに**py ファイルの解析ルーチンも実装**
5. TreeWidget のクリック処理を直し忘れてたんだがそのままでいけた、ラッキー
6. 解析アルゴリズムの実験
アウトライン行の判定とかmodelへの子供の追加方法とか、少し変えて実験してみたけど高速化はナカナカ難しい
でも**もっとエレガントなやり方があるはずだ**って気はする
こういう作業を最適化って言うんだろうか?
考えるのは楽しい ( ´∀`)
---
190920 -
# 解析ルーチン書換
- 階層は無限に出来るようにした
- 色々改善
# 現在行をアウトライン項目で選択
- 結構難しかったがあるとすごく便利
- **再帰、Recursion**
アウトライン階層が無限対応なのでこっちも対応必要で結構考えた
# 検索窓のリターンで検索、逆、行検索
- すごく使いやすい ( ´∀`)
# 簡易ヘルプ実装
# お気に入りをTreeViewにしてフォルダに対応
- すっきりしたわ~(・∀・)ノ
----
---> [scieditor2](https://mimemo.io/m/zeXgworpjz4K0Ek)
190918
手直しもろもろ
api比較 ~ シンチラからの行取得
- ①QScintilla と ②QScintillaBase の api 速度比較
シンチラから特定の行の文字列をもらう関数について、①は使い方がよくわからなかったので従来は②でやってた
①は基本②のラッパだから速度は遅いはずだし
しかし②を非効率なコードで呼んでいれば①の方が速い可能性もある - 2M以上の比較的大きめのファイルで実験した結果だが
①0.25秒②0.45秒
①の方が早い!!(゚Д゚)(゚Д゚)(゚Д゚)(゚Д゚)
俺のコードが非効率だったんだな・・・ - ②はc++ベースでわかりやすいけどpythonからは使いづらい
文字列を取得する際もまず行の長さを取得してその分のバッファを確保してからもらいに行く
バッファ確保のために ctypes を使っていた
①だと一つの関数で取得した文字列のポインタが簡単に帰ってきて、凄く簡単でpythonライク
こんな簡単な①の方がしかも速いとは・・
②で書いた私のコードがダメダメだったんだなあ・・・・
きちんと動いてはいたんだけど
がっかりでしたが、まあ、改善されたって事で
tabChanged
- try でエラー回避して落ちないようにしている部分のエラーメッセを全て表示しようと思い箇所をチェックしていて見つけた
- タブを閉じて無くなったときの動作をtryでエラー回避してたが、タブカウントがゼロなら何もせずに戻るように書き換えた
- try を覚えて何でもここに逃げてた時期があった。解決は簡単だったのに。コードを後で見直すとこういう発見が随所にあるのかもしれないなあ
QtreeWidget に model をセットする実験
- できませんでした ┐('д')┌
- アウトラインのビューはいろいろ使い勝手が良いのでモデルを差し替えて使いたかった、View のように
もともとWidgetはviewの派生だから可能だと思ったが、modelは持ってるもののWidgetに固有のようで、差し替えはできないようです。
残念、やはりwidgetをviewに変更しなくてはいけませんな
190919
アウトライン解析ルーチンの移動
- ずっと課題にしていて手をつけられずにいたけどやっとできた
長いこと構想を練っていたためか日中codingして家で実装したらほぼ予定通り動いてくれた (・∀・)ノ
- TreeWidget を designer で TreeView に差し替え
これは簡単にできる。多分もとのクラスが同じだと良いんだと思う
レイアウトを変える必要も無いので楽 - 解析ルーチンをシンチラの派生クラスに移してmodelをクラスで保存
タブ切替時に都度再解析してたけどmodelを差し替えるだけにして高速化 - 行単位検索もTreeWidget を使ってたので書き換え
- その他細かい書き換えと、ついでにpy ファイルの解析ルーチンも実装
- TreeWidget のクリック処理を直し忘れてたんだがそのままでいけた、ラッキー
- 解析アルゴリズムの実験
アウトライン行の判定とかmodelへの子供の追加方法とか、少し変えて実験してみたけど高速化はナカナカ難しい
でももっとエレガントなやり方があるはずだって気はする
こういう作業を最適化って言うんだろうか?
考えるのは楽しい ( ´∀`)
190920 -
解析ルーチン書換
- 階層は無限に出来るようにした
- 色々改善
現在行をアウトライン項目で選択
- 結構難しかったがあるとすごく便利
- 再帰、Recursion
アウトライン階層が無限対応なのでこっちも対応必要で結構考えた
検索窓のリターンで検索、逆、行検索
- すごく使いやすい ( ´∀`)
簡易ヘルプ実装
お気に入りをTreeViewにしてフォルダに対応
- すっきりしたわ~(・∀・)ノ
---> scieditor2