Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HashSet或==符号_C#_Performance_Optimization_Hashset_Logical Operators - Fatal编程技术网

C# HashSet或==符号

C# HashSet或==符号,c#,performance,optimization,hashset,logical-operators,C#,Performance,Optimization,Hashset,Logical Operators,我在varsdoc1和doc2中有两个50kb的字符串数据通过实体框架形成数据库。我想比较这两个变量,看看doc1和doc2是否相等。我可以获取字符串的哈希集并比较哈希。或者我可以简单地使用如果(doc1==doc2)有第三个更好的选项吗 如果没有第三种选择,是否有人对hashset v有任何建议(逻辑上的建议是好的)=在优化、性能和IL在后台做什么方面?我可以想象,hashset必须以线性方式扫描字符串,直到最后创建一个唯一的hash字符串(对于两个变量)。==也是如此。那么逻辑上哪一个更好

我在vars
doc1
doc2
中有两个50kb的字符串数据通过实体框架形成数据库。我想比较这两个变量,看看doc1和doc2是否相等。我可以获取字符串的哈希集并比较哈希。或者我可以简单地使用
如果(doc1==doc2)
有第三个更好的选项吗


如果没有第三种选择,是否有人对hashset v有任何建议(逻辑上的建议是好的)<代码>=在优化、性能和IL在后台做什么方面?我可以想象,
hashset
必须以线性方式扫描字符串,直到最后创建一个唯一的hash字符串(对于两个变量)。
==
也是如此。那么逻辑上哪一个更好

操作符逐字符进行比较,但一旦发现两个字符串之间不匹配,就会停止,因此在这方面,它将能够执行得更好,因为它可能不必扫描整个字符串,即使在最坏的情况下,当字符串相等时,也只需对它们进行哈希运算


如果您真的关心性能,可以将长字符串的预计算哈希存储在数据库中,因此根本不必查看它们的内容(前提是哈希冲突不是致命的).

运算符将逐个字符进行比较,但一旦发现两个字符串之间不匹配,就会停止,因此,在这方面,它将能够执行得更好,因为它可能不必扫描整个字符串,即使在最坏的情况下,当它们相等时,除了对它们进行哈希运算,您也没有执行更多的工作


如果您真的关心性能,您可以将长字符串的预计算哈希存储在数据库中,因此根本不必查看它们的内容(前提是哈希冲突不是致命的)。

如果
stringValue==otherStringValue

  • 与stringValue.Equals()不同
  • =
    操作符调用
    static Equals(字符串a、字符串b)
    方法(该方法依次转到内部
    EqualsHelper
    进行比较)
  • null
    字符串上调用
    .Equals(
    )会获得null引用异常,而在
    =
    上则不会
  • 我在博客上看到过这个

    a.Equals(b);
    string.Equals(a, b); // faster
    

    如果
    stringValue==otherStringValue

  • 与stringValue.Equals()不同
  • =
    操作符调用
    static Equals(字符串a、字符串b)
    方法(该方法依次转到内部
    EqualsHelper
    进行比较)
  • null
    字符串上调用
    .Equals(
    )会获得null引用异常,而在
    =
    上则不会
  • 我在博客上看到过这个

    a.Equals(b);
    string.Equals(a, b); // faster
    

    定义更好。
    =
    有效吗?如果有效,为什么要寻找更好的方法?是否存在性能瓶颈?要比较字符串,无论使用何种算法,它都必须遍历字符串中的字符以进行比较(如果长度相同)。因此,只需使用
    =
    运算符。你是说,还是?@Lasse No。我在编码过程中处于十字路口,我需要做出决定。@SriramSakthivel是有意义的。
    =
    正如krisku提到的,它还有一个额外的优点,即一旦发现不匹配,它就会停止。定义得更好。
    =
    有效吗?如果有效,你为什么要寻找某个呢更好吗?您是否有性能瓶颈?要比较字符串,无论您使用什么算法,它都必须遍历字符串中的字符以进行比较(如果长度相同)。因此,只需使用
    =
    运算符。你是说,还是?@Lasse No。我在编码过程中处于十字路口,需要做出决定。@SriramSakthivel是有意义的。
    =
    正如krisku提到的,它还有一个额外的优点,即一旦发现不匹配,它就会停止。
    String.Equals()
    检查开头的长度,因此此检查是多余的。来源:谢谢你们!我没有足够的代表来投票。否则我会的。我已经编辑了我的答案,请看一下:)快乐编码
    字符串。等于()
    检查开头的长度,因此此检查是多余的。来源:谢谢你们!我没有足够的代表投票。否则我会的。我已经编辑了我的答案,请看一看:)编码愉快当我接受此答案时,我将使用
    string1.Equals(string2)
    根据Sagar的建议和阅读dbc参考以下Sagar的答案。谢谢你们。你们太棒了!虽然我接受了这个答案,但我将使用Sagar建议的
    string1.Equals(string2)
    ,并基于下面对Sagar答案的dbc参考。谢谢你们。你们太棒了!