[英]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.