在我的应用程序中,我从几十个执行到几百个并行操作(没有操作的返回值).
哪种方法最优:
Task.Factory.StartNew在foreach循环中使用迭代遍历Action数组(Action[])
Task.Factory.StartNew(() => someAction());
使用Parallel类其中actions是Action阵列(Action[])
Parallel.Invoke(actions);
这两种方法是否相同?是否有任何性能影响?
编辑
我已经执行了一些性能测试,并且在我的机器上(每个2个CPU 2核心)结果似乎非常相似.我不确定它在1 CPU等其他机器上会是什么样子.另外我不确定(不知道如何以非常准确的方式测试它)什么是内存消耗.
我有一个与字符串比较和字符比较相关的问题.
字符>和0(零)具有以下十进制值62并48相应地.
当我比较以下代码中的两个字符时,我得到了值True(这是正确的)
Console.WriteLine('>' > '0');
Run Code Online (Sandbox Code Playgroud)
当我在下面的代码中比较两个单字符字符串时,我得到的值-1表示">"小于"0"(默认文化是英语)
Console.WriteLine(string.Compare(">", "0"));
Run Code Online (Sandbox Code Playgroud)
而以下代码中的"3"和"1"(51和49代码值)的比较返回1(如预期的那样)
Console.WriteLine(string.Compare("3", "1"));
Run Code Online (Sandbox Code Playgroud)
另外,string.Compare(string str1, string str2)文档说:
比较使用当前文化来获取特定于文化的信息,例如套管规则和单个字符的字母顺序
您是否能够解释(或提供一些文档的参考)如何实现字符串比较,例如如何计算单个字符的字母顺序等?
我发现了几个关于LINQ for Java的问题,例如
然而,这些问题是在2008年至2010年左右被问到的.当时Java语言不支持lambda表达式等必要的语言功能(根据Jon Skeet的回答).
现在,当Java8即将出现,并且可能会提供诸如Lambda Expressions之类的功能时,您认为很快就可以实现LINQ for Java实现/项目吗?
您是否听说过任何试图实现Java和C#之间差距的项目?
我创建了mod10算法的LINQ实现.
源代码:
string number = "7992739871";
int mod10sum = number.Reverse()
.Select((c, i) => (c - '0') << ((i + 1) & 1)) // Double every other digit and sum the digits of the products (e.g., 10: 1 + 0 = 1, 14: 1 + 4 = 5)
.Sum(c => c - '0') % 10; // together with the undoubled digits from the original number
string checkDigit = (mod10sum == 0 ? 0 : 10 - mod10sum).ToString("0");
Console.WriteLine(checkDigit);
Run Code Online (Sandbox Code Playgroud)
根据 …