2009-03-18 11 views
2

スタートアップ時にロードするアセンブリの数を削減しようとしています。最も簡単なものの1つは、Microsoft.VisualBasicアセンブリです。 Left()のように簡単に置き換えることができるものがたくさんありますが、vbLfとChr()を置き換える良い方法を見つけるのに苦労しています。 vbCrLfはEnvironment.NewLineに取って代わるほど簡単でしたが、ラインフィードだけを期待しているUnixベースのシステムのコンテンツを生成する場所がいくつかあります。vbLfとChr()を定数に置き換えることはできますか?

+1

'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

答えて

7

私は最初に、これには全く理由がない可能性があることを指摘する必要があります。 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を前提としていますが、単一の行を期待していますが、これをフィードのコードを持っている場合でありますかなり安全な賭けです。

+0

@Joel、ありがとう、あなたはおそらくメモリフットプリントを減らさないことについて正しいでしょう。私が達成しようとしているのは、起動時に本当に必要としないアセンブリを削除することによって、コールドスタートアップ時間を短縮することです。これはWPFアプリケーションであり、XPでのコールドスタートにはかなり高い料金がかかります。 –

+1

これは変更されません。コアアセンブリはすべて最適化されています。あなたは数ミリ秒話しています。これは、ご家族が自分のコードで行う必要がある作業です。そのため、アセンブリをバイパスするためのユーザーコードを追加することは後退します。 –

+1

@Joel、あなたは正しいです。私はそれを取り除き、測定可能な差異がないことを発見した。誤った最適化:「勝つ唯一の方法は遊ばないことです」 –

3

Public Const vbLf As String = ChrW(10)

Public Const vbLf As String = Convert.ToChar(10) 
+0

彼はChrW()も取り除きたい。 –

+0

申し訳ありませんbdukes、私はMicrosoft.VisualBasicで何もせずにこれをやりたい –

0

ChrReflectorでそれを見て)かなり複雑な方法です。

ベースにはConvert.ToChar()が使用されていますが、さまざまな文字の範囲で確認と異なる動作が行われます。

0

VB.NETを使用していると仮定して、Microsoft.VisualBasicクラスへの明示的な呼び出しを削除しても、アセンブリへの参照は削除されません。 VB.NETコンパイラは、あなたの代わりにそこにいくつかの関数link textを利用しています。 /vbruntime-スイッチでコンパイルすることはできますが、自明なアプリケーションではお勧めしません。

1
 ControlChars.Lf 

これは定数です。

関連する問題