簡體   English   中英

將int轉換為char的最快方法是什么

[英]What is the fastest way to convert int to char

將int轉換為char的最快方法是什么? 我需要一種更快的方法,因為,

convertingchar = Convert.ToChar(intvalue);

是我在程序中最慢的部分。 我有多個不同的int值,必須將其轉換為char。 我的項目很大,無法發布我的功能。 這就是為什么我發布此測試功能。

到目前為止,我的代碼。

char convertingchar = ' ';
...some code...
public void convert(int intvalue){
   convertingchar = Convert.ToChar(intvalue);
}

在您的Convert.ToChar方法和上述轉換方法之間進行快速性能測試 ,我發現65535測試( char.MaxValue ):

Convert: 00:00:00.0005447 total
Cast:    00:00:00.0003663 total

在最佳狀態下,cast在大約一半的轉換時間內為我運行。

參考源中提供Convert.ToChar的實現揭示了時間消耗者:

public static char ToChar(int value) {
    if (value < 0 || value > Char.MaxValue) throw new OverflowException(Environment.GetResourceString("Overflow_Char"));
    Contract.EndContractBlock();
    return (char)value;
}

盡管這些檢查確實可以達到目的,但您的特定用例(尤其是在這種性能至關重要的情況下)可能不需要它們。 隨你(由你決定。

強制執行這些檢查的一個不錯的選擇是使用ushort而不是int 顯然,可能達到或不可能達到,但是具有相同的最大值,這意味着您將在編譯時檢查以前取決於ToChar的性能。

Convert.ToChar最終將顯式轉換為(char)value ,其中value是您的int值。 在這樣做之前,它將檢查以確保值在0 to 0xffff范圍內,如果不是,則拋出OverflowException 額外的方法調用,值/邊界檢查和OverflowException可能會有用,但是如果沒有用,如果僅使用(char)value ,性能會更好。

這樣可以確保轉換時一切正常,但要花一些時間,

convertingchar = Convert.ToChar(intvalue);

這將在不確保一切正常的情況下進行轉換,從而減少了時間,

convertingchar = (char)intvalue;

例如。

 Console.WriteLine("(char)122 is {0}", (char)122);

產量:

(char)122是z


注意

與問題沒有直接關系,但是如果您認為轉換速度很慢,則可能是做錯了什么。 問題是為什么您需要將很多int轉換為char 您正在嘗試實現的目標。 可能有更好的方法。

與其他人所指出的相反,最快的方法是根本不運行任何代碼。 在所有其他情況下,都為int分配了內存,為char分配了內存。 因此,可以實現的最好結果就是將int復制到char地址。

但是,由於根本不運行任何代碼,因此該代碼快100%。

[StructLayout(LayoutKind.Explicit)]
public struct Foo
{
    [FieldOffset(0)] 
    public int Integer;
    [FieldOffset(0)] 
    public char Char;
}

https://msdn.microsoft.com/zh-cn/library/aa288471%28v=vs.71%29.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM