スタートアップ時にロードするアセンブリの数を削減しようとしています。最も簡単なものの1つは、Microsoft.VisualBasicアセンブリです。 Left()のように簡単に置き換えることができるものがたくさんありますが、vbLfとChr()を置き換える良い方法を見つけるのに苦労しています。 vbCrLfはEnvironment.NewLineに取って代わるほど簡単でしたが、ラインフィードだけを期待しているUnixベースのシステムのコンテンツを生成する場所がいくつかあります。vbLfとChr()を定数に置き換えることはできますか?
答えて
私は最初に、これには全く理由がない可能性があることを指摘する必要があります。 Microsoft.VisualBasic.dllを含むすべてのビルトイン.Netアセンブリは、すべての.Netプログラムで常に使用でき、プログラム内でこれらのアセンブリを使用するか使用しないかはゼロがプログラムのメモリフットプリントに影響します。 C#プログラムのMicrosoft.VisualBasic.dllも問題なく使用できます。おそらく問題に遭遇する可能性がある唯一のケースは、ライブラリのモノラル実装です。したがって、ある時点でモノに移植することを考えているのでなければ、恐らくホイールを回転させるでしょう。
言った:
はChr():
Function Chr(Byval CharCode As Integer) as Char
Return Convert.ToChar(CharCode)
End Function
vbLf
Const vbLf As Char = Chr(10) ''// of course calling your own Chr implementation
これはASCIIを前提としていますが、単一の行を期待していますが、これをフィードのコードを持っている場合でありますかなり安全な賭けです。
@Joel、ありがとう、あなたはおそらくメモリフットプリントを減らさないことについて正しいでしょう。私が達成しようとしているのは、起動時に本当に必要としないアセンブリを削除することによって、コールドスタートアップ時間を短縮することです。これはWPFアプリケーションであり、XPでのコールドスタートにはかなり高い料金がかかります。 –
これは変更されません。コアアセンブリはすべて最適化されています。あなたは数ミリ秒話しています。これは、ご家族が自分のコードで行う必要がある作業です。そのため、アセンブリをバイパスするためのユーザーコードを追加することは後退します。 –
@Joel、あなたは正しいです。私はそれを取り除き、測定可能な差異がないことを発見した。誤った最適化:「勝つ唯一の方法は遊ばないことです」 –
Public Const vbLf As String = ChrW(10)
Public Const vbLf As String = Convert.ToChar(10)
彼はChrW()も取り除きたい。 –
申し訳ありませんbdukes、私はMicrosoft.VisualBasicで何もせずにこれをやりたい –
Chr
(Reflectorでそれを見て)かなり複雑な方法です。
ベースにはConvert.ToChar()
が使用されていますが、さまざまな文字の範囲で確認と異なる動作が行われます。
VB.NETを使用していると仮定して、Microsoft.VisualBasicクラスへの明示的な呼び出しを削除しても、アセンブリへの参照は削除されません。 VB.NETコンパイラは、あなたの代わりにそこにいくつかの関数link textを利用しています。 /vbruntime-スイッチでコンパイルすることはできますが、自明なアプリケーションではお勧めしません。
ControlChars.Lf
これは定数です。
- 1. vbCrLfをvbLfに置き換える
- 2. &で置き換えることはできますか? C++で
- 3. システムオープンファイルダイアログを置き換えることはできますか?
- 4. メソッドをプレーン関数で置き換えることはできますか?
- 5. PHPクラス内の関数を置き換えることはできますか?
- 6. この継承をコンポジションに置き換えることはできますか?
- 7. リストに値を置き換えることができない最後の値を置き換えること
- 8. メソッド参照と置き換えることができます
- 9. テキストファイル内の1つの単語を置き換えることはできますが、別の単語を置き換えることはできますか?
- 10. boost :: bindをbind1st/2ndと置き換えることはできますか?
- 11. spring-statemachineでzookeeperをetcdに置き換えることはできますか?
- 12. Mono.Cecilでフィールドをプロパティに置き換えることはできますか?
- 13. PHPで式をテキストに置き換えることはできますか?
- 14. system.jsでrequire.jsを置き換えることができます
- 15. jQuery UIダイアログボックスを簡単に置き換えることはできますか?
- 16. django-userenaをpinaxに置き換えることはできますか?
- 17. Linuxカーネル機能をモジュールに置き換えることはできますか?
- 18. jaxb.propertiesをコードに置き換えることはできますか?
- 19. UIButtonのUILabelをFXLabelに置き換えることはできますか?
- 20. 文字列を辞書に置き換えることはできますか?
- 21. .takeUntil(Observable.timer(0))を.take(1)に置き換えることはできますか?
- 22. Gitリポジトリをバックアップに置き換えることはできますか?
- 23. ViewStateを隠しフィールドに置き換えることはできますか?
- 24. ButtonFieldをGridViewの画像に置き換えることはできますか?
- 25. QtでOpenGLをQMLで置き換えることはできますか?
- 26. プレースホルダを既存のグラフの定数で置き換えることはできますか?
- 27. JavaScriptでvarを置き換えることはできますか?
- 28. IEでvmaxを置き換えることはできますか?
- 29. webpackでrequirejs、commonjsを置き換えることはできますか?
- 30. WebpackでGulpを置き換えることはできますか?
'vbLf'は' Environment.NewLine'とは異なります。前者は定数で、後者は動的です(https://msdn.microsoft.com/en-US/library/system.environmentで説明します)。 .newline%28v = vs.110%29.aspx)、Winマシンでは、\ r \ nに対応します。 @dbasnettのように 'ControlChars.Lf'を代わりに使うことを考えてください。 – Teejay