新的RyuJIT编译器是否曾生成向量(SIMD)CPU指令,何时?
附注:System.Numerics命名空间包含允许显式使用Vector操作的类型,这些操作可能会也可能不会生成SIMD指令,具体取决于CPU,CLR版本,JITer版本,是否直接编译为本机代码.这个问题具体是关于何时非矢量代码(例如在C#或F#中)将产生SIMD指令.
首先,有一个很好的概述IIS7 HTTP请求生命周期和影响性能的各种设置:
但非常具体,在dotNet 4中,maxConcurrentRequestsPerCPU和requestsQueueLimit的默认值设置为5000.例如,相当于:(在aspnet.config中):
<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" /> (** see note below)
</system.web>
Run Code Online (Sandbox Code Playgroud)
在我看来,在多CPU /核心服务器上,在'perCPU'限制之前,始终会调用requestQueueLimit.因此,如果每个CPU最多需要5000个请求,那么我希望requestQueueLimit需要增加到5000*CPUCount或者只是完全禁用.
我的解释是否正确?如果是这样,我可以禁用requestQueueLimit吗?(将其设为零?).关于此设置的文档似乎没有解决这个问题(所以我可能会遗漏某些内容或误读?)
**上述文章的旁注:requestQueueLimit命名不佳.它实际上限制了ASP.NET可以同时处理的最大请求数.这包括排队的请求和正在执行的请求.如果"请求当前"性能计数器超过requestQueueLimit,则将拒绝新的传入请求,并显示503状态代码)
如何从System.Xml.XmlReader编写XML文件?
我认为这将是一个简单的问题,但每当我搜索时,我似乎最终都会将文件读取到读取器或逐个节点地编写.
XmlReader对象传达存储在数据库中的xml,只需要从数据库中传出一个文件即可.有没有简单的方法来做到这一点?
SqlCommand dataCmd = new SqlCommand(sqlText, Conn);
System.Xml.XmlReader dataReader = null;
dataCmd.CommandTimeout = 60000;
Conn.Open();
dataReader = dataCmd.ExecuteXmlReader();
dataReader.Read();
Run Code Online (Sandbox Code Playgroud) 这是Visual Studio中的一个C#Web服务项目,已经存在了很多年.今天它开始在Visual Studio中启动时抛出异常,但只有在附加调试器时才会抛出异常.
例外是:
System.StackOverflowException was unhandled
Message: An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll
Run Code Online (Sandbox Code Playgroud)
这是Visual Studio 2013 Update 3.
堆栈跟踪的相关部分:
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle) Unknown
[Lightweight Function]
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool verifyKnownType, System.RuntimeTypeHandle declaredTypeHandle, System.Type …Run Code Online (Sandbox Code Playgroud) 我已经习惯在.Net的并行扩展中使用Parallel.For(),因为它是一种简单的并行化代码的方法,而无需手动启动和维护线程(这可能是繁琐的).我现在正在看一个无限循环(做一些事情,直到我发出信号停止),我希望并行化,没有一个参数可以自由Parallel.For()重载这样做,所以想知道这里最好的方法是什么是.原则上我可以这样做:
Parallel.For(0, int.Max)
Run Code Online (Sandbox Code Playgroud)
但我怀疑这可能不是工作分区逻辑处理的预期/有效模式(?)
另一种选择是:
for(;;)
{
Parallel.For(0, 128, delegate()
{
// Do stuff.
}
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不够优雅,也可能导致低效的工作分区.
现在我的直觉是通过创建和维护我自己的线程来手动执行此操作,但我有兴趣获得一些反馈/意见.谢谢.
===更新===
我在接受的答案中使用了文章中的代码的简化版本(我删除了ParallelOptions参数).这是代码......
public class ParallelUtils
{
public static void While(Func<bool> condition, Action body)
{
Parallel.ForEach(IterateUntilFalse(condition), ignored => body());
}
private static IEnumerable<bool> IterateUntilFalse(Func<bool> condition)
{
while (condition()) yield return true;
}
}
Run Code Online (Sandbox Code Playgroud)
一个示例用法是:
Func<bool> whileCondFn = () => !_requestStopFlag;
ParallelUtils.While(whileCondFn, delegate()
{
// Do stuff.
});
Run Code Online (Sandbox Code Playgroud) .net c# parallel-processing parallel-extensions parallel-for
例:
// Potentially large struct.
struct Foo
{
public int A;
public int B;
// etc.
}
Foo[] arr = new Foo[100];
Run Code Online (Sandbox Code Playgroud)
如果Foo是100字节结构,则在执行以下语句期间将在内存中复制多少字节:
int x = arr[0].A
也就是说,将arr [0]计算为某个临时变量(Foo实例的100字节副本),然后将.A复制到变量x(4字节副本).
或者是编译器,JITer和CLR的某种组合能够优化此语句,以便将4个字节A直接复制到x.
如果执行了优化,当项目被保存在一个List<Foo>数组中或者数组作为一个IList<Foo>或一个数组传递时,它是否仍然存在ArraySegment<Foo>?
我正在寻找生成一些数据库测试数据,特别是包含人名的表列.为了更好地指示索引在基于名称的搜索方面的工作情况,我希望尽可能接近真实世界名称及其真实的频率分布,例如,许多不同的名称,其频率分布在某些幂律分布上.
理想情况下,我正在寻找一个免费提供的数据文件,其名称后跟每个名称的单个频率值(或等效概率).
基于盎格鲁撒克逊人的名字会很好,尽管来自其他文化的名字也会有用.
执行情况Nullable<T>.GetHashCode()如下:
public override int GetHashCode()
{
if (!this.HasValue)
{
return 0;
}
return this.value.GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果基础值也生成哈希码0(例如bool设置为false或int32设置为0),那么我们有两个常见的不同对象状态具有相同的哈希码.在我看来,更好的实现将是类似的.
public override int GetHashCode()
{
if (!this.HasValue)
{
return 0xD523648A; // E.g. some arbitrary 32 bit int with a good mix of set and
// unset bits (also probably a prime number).
}
return this.value.GetHashCode();
}
Run Code Online (Sandbox Code Playgroud) 我有一个调用 ASP.NET Core REST 服务的 C# 客户端应用程序。如果服务器上的 REST 服务失败,则它被配置为根据rfc7807返回“问题详细信息”json 响应,例如:
{
"type": "ServiceFault",
"title": "A service level error occurred executing the action FooController.Create
"status": 500,
"detail": "Code=ServiceFault; Reference=5a0912a2-df17-4f27-8e5a-0d4828022306; Message=An error occurred creating a record.",
"instance": "urn:foo-corp:error:5a0912a2-df17-4f27-8e5a-0d4828022306"
}
Run Code Online (Sandbox Code Playgroud)
在客户端应用程序中,我想将此 json 消息反序列化为ProblemDetails的实例,作为访问详细信息的便捷方式。例如:
ProblemDetails details = await httpResp.Content.ReadAsAsync<ProblemDetails>();
Run Code Online (Sandbox Code Playgroud)
但是,反序列化会抛出以下异常:
System.Net.Http.UnsupportedMediaTypeException:没有 MediaTypeFormatter 可用于从媒体类型为“application/problem+json”的内容中读取类型为“ProblemDetails”的对象。
.net ×5
c# ×4
asp.net ×2
arrays ×1
asmx ×1
asp.net-2.0 ×1
asp.net-core ×1
database ×1
hashcode ×1
iis ×1
iis-7 ×1
parallel-for ×1
performance ×1
ryujit ×1
shadow-copy ×1
simd ×1
struct ×1
test-data ×1
testing ×1
webmethod ×1
xml ×1
xmlreader ×1
xmlwriter ×1