Tag: C#的

无法find如何使用HttpContent

我正在尝试使用HttpContent : HttpContent myContent = HttpContent.Create(SOME_JSON); …但我没有find它定义的DLL的运气。 首先,我尝试添加对Microsoft.Http和System.Net引用,但都不在列表中。 我也尝试添加对System.Net.Http的引用,但是HttpContent类不可用。 那么,谁能告诉我在哪里可以findHttpContent类?

C#中的dynamic数组

有什么方法在C#中创builddynamic数组?

如何使用C#解码URL参数?

我怎样才能解码使用C#编码的URL参数? 例如,拿这个URL: my.aspx?val=%2Fxyz2F

(Dis)将蓝牙设备连接到Windows.Devices.Bluetooth.Rfcomm(WP8.1)

在Windows Phone / Desktop 8.1上连接和断开与蓝牙设备的连接已经得到各种结果。 我一直在使用Windows.Devices.Bluetooth.Rfcomm命名空间,并试图用不同的蓝牙版本/类来连接多个设备。 版本1.2(1级和2级) 版本2.0(1级和2级) 版本2.1(1级和2级) testing诺基亚Lumia 625和Lumia 635,戴尔Latitude E6500和戴尔Precision M6400。 每当我尝试连接到2.0或2.1设备都有问题。 我第一次尝试连接到每个设备,一切都会好起来,连接将打开。 当我closures连接并重新连接设备时,麻烦就开始了。 在重新连接期间,连接永远不会打开,debugging器将抛出一个System.Exception: > Message: No further data is available. 另外,当连接失败时,Windows 8.1设备将自行尝试(不成功)连接到蓝牙设备,即使我自己的应用程序被终止。 有时Windows 8.1设备也会将蓝牙设备显示为已连接,而设备可视化地显示它不再连接。 重新连接蓝牙设备的唯一方法是取消配对并closures/重新启动Windows设备上的蓝牙。 每当我尝试在连接失败之后尝试对DeviceInformation进行新的调用时,它将拒绝返回之前尝试连接的设备。 > Message: The service cannot be found in the specified name space. 奇怪的结果,1.2设备完美的工作。 清单文件: <m2:DeviceCapability Name="bluetooth.rfcomm"> <m2:Device Id="any"> <m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/> </m2:Device> </m2:DeviceCapability> select设备: Guid […]

C代码循环的性能

这个问题在这里继续我的问题(根据神秘的build议): C代码循环的性能 继续我的问题,当我使用打包指令,而不是标量指令使用内在函数的代码看起来非常相似: for(int i=0; i<size; i+=16) { y1 = _mm_load_ps(output[i]); … y4 = _mm_load_ps(output[i+12]); for(k=0; k<ksize; k++){ for(l=0; l<ksize; l++){ w = _mm_set_ps1(weight[i+k+l]); x1 = _mm_load_ps(input[i+k+l]); y1 = _mm_add_ps(y1,_mm_mul_ps(w,x1)); … x4 = _mm_load_ps(input[i+k+l+12]); y4 = _mm_add_ps(y4,_mm_mul_ps(w,x4)); } } _mm_store_ps(&output[i],y1); … _mm_store_ps(&output[i+12],y4); } 这个内核的testing性能是每个周期大约5.6个FP操作,但是我认为它恰好是标量版本的4倍,即4.1,6 = 6,4个FP操作每个周期。 考虑到重量因素的移动(感谢指出),时间表看起来像: 它看起来像日程安排不会改变,虽然在movss操作之后有一个额外的指令,将标量权值移到XMM寄存器,然后使用shufps在整个vector中复制这个标量值。 考虑到从负载到浮点域的切换延迟时间,似乎权重vector已经准备好用于mulps ,所以这不应该引起任何额外的延迟。 在这个内核中使用的movaps (alignment的,压缩的移动), addps & mulps指令(用汇编代码检查)与标量版本具有相同的延迟和吞吐量,所以这不应该引起任何额外的延迟。 […]

为什么操作员比方法调用慢得多? (结构只在较早的JIT上变慢)

简介:我用C#编写高性能的代码。 是的,我知道C ++会给我更好的优化,但我仍然select使用C#。 我不想辩论这个select。 相反,我想听听那些和我一样,试图在.NET Framework上编写高性能代码的人。 问题: 为什么下面的代码中的运算符比等效的方法调用慢? 为什么在下面的代码中传递两个双精度的方法比传递一个内部有两个双精度的结构的等价方法快呢? (答:老JITs优化结构不佳) 有没有办法让.NET JIT编译器像结构体的成员一样有效地对待简单结构体? (答:得到更新的JIT) 我想我知道:原始的.NET JIT编译器不会内联任何涉及结构的东西。 奇怪的给定的结构应该只用于你需要小的值types,应该像内置优化,但是真实的。 幸运的是,在.NET 3.5SP1和.NET 2.0SP2中,他们对JIT Optimizer进行了一些改进,包括对内联的改进,特别是对结构的改进。 (我猜他们是这样做的,否则他们所引入的新复杂结构将会执行非常糟糕的事情……所以复杂团队可能正在冲击JIT Optimizer团队。)因此,.NET 3.5 SP1之前的任何文档可能这个问题不太相关。 我的testing显示:我已经通过检查C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorwks.dll文件是否具有> = 3053版本来validation我是否具有较新的JIT Optimizer,因此应该有这些改进到JIT优化器。 但是,即使如此,我的时间表和反汇编看起来都是: JIT生成的用于传递两个双精度结构的代码比直接传递两个双精度的代码效率低得多。 与传递结构作为参数相比,JIT为struct方法生成的代码传递“this”的效率要高得多。 如果你传递两个双打而不是传递一个带有两个双精度结构的JIT,则JIT仍然更好,即使乘法器由于清楚地处于一个循环中也是如此。 定时:实际上,在反汇编中,我意识到循环中的大部分时间只是从列表中访问testing数据。 如果将循环的开销代码和数据的访问分解出来,那么进行相同调用的四种方法之间的区别是显着不同的。 我可以从5倍到20倍的任何地方做PlusEqual(double,double)而不是PlusEqual(Element)。 和10倍到40倍做PlusEqual(double,double)而不是operator + =。 哇。 伤心。 以下是一组计时: Populating List<Element> took 320ms. The […]

对Excel自定义函数工具提示的追求

这个问题之前已经被问 过了 ,但是每次被接受的答案都只是使用Application.MacroOptions ( VBA6 )( VBA7 )来提供函数描述的辞职,但是这个信息实际上并没有作为工具提示出现,所以它不能解决我的问题。 目标 我们所希望的是能够以任何方式(VBA,VSTO或COM插件)定义自定义函数,并为用户提供对函数及其参数的popup/工具提示描述的好处,如对于每个内置的Excel函数,都可以内联或在编辑栏中显示: 被广泛接受的这个需求的答案是,它不可能定制function,但是我想挑战这个信念。 问题 目前,我见过的最好的方法是定义函数(通常使用上面的MacroOptions调用),以便在调用函数对话框(公式栏中的fxbutton)时,它们的函数和参数描述如下所示: 正如你所看到的,这是一个复杂的函数,有许多参数。 如果用户不知道这个“函数参数”对话框,以及如何使用它,而只是熟悉Excel的标准工具提示,他们将只能看到公式名称,并没有额外的帮助: 他们没有机会正确提供所需的参数。 (没有阅读文档,这当然是没有用户的。) 现在,高级用户可能知道,通过inputCtrl + Shift + A ,他们将被授予一个自动完成的函数参数列表,如下所示: 但是,当然,我们也遇到了同样的问题,那就是标准的excel用户只会使用第一张图片的默认行为,而且可能从来没有学过这个function。 这一点应该清楚,为什么这是不够的,我们希望每个内置的函数都有 – 内联的工具提示告诉用户如何使用函数。 戏弄 起初,我可能已经确信,除了原生的Excel应用程序function,这是不可能的。 加载项和VBA是可扩展性function,并且此工具提示可能根本无法扩展。 但是,这个理论受到分析工具包加载项存在的挑战。 当然,它是build立在微软的,但ANALYS32.xll是一个独立的XLL插件,就像那些可以在VB,C,C ++和C#中生成的插件一样。 果然,当XLL被加载到应用程序中时,它提供的函数具有与本机Excel函数相同的工具提示: 当然,如果这个信息以某种方式编码在XLL文件中,并传递给Excel,有一种方法可以用我们自己的插件复制它? 现在我正要开始自我反思,看看我是否可以对分析工具箱中正在进行的任何工作进行逆向工程。 你如何帮助 我几乎可以肯定,我已经研究了所有关于这个问题的公开信息。 如果有人知道我不知道这可能对此有帮助,请随时发一声。我对逆向工程编译的dll / xlls非常不熟悉,所以如果有人想popup打开Analysis32.xll的本地副本,弄清楚自定义函数定义是怎么回事,我会非常感激。 否则,我会继续深入研究这个问题,直到我把所有的问题都解决了,然后回报我find的东西。

为什么这个看起来无效的代码在g ++ 6.0上编译成功?

考虑一下这个奇怪的程序: int main() { int(*){} Is it C++14 or any other language? } ( 在这里和这里看到一个现场演示。) 即使注释//缺失,即使在g ++ 6.0中使用-pedantic-errors选项,代码也能正常编译,不会出现任何错误和警告。 这对我来说似乎是一个编译器错误。 它真的是编译器中的错误吗?

锁(新对象()) – 货物邪教或一些疯狂的“语言特例”?

我正在审查顾问编写的一些代码,在几十个红旗已经popup的时候,我不能把头围绕在下面的代码片段中: private void foo() { if (InvokeRequired) { lock (new object()) { if (m_bar!= null) Invoke(new fooDelegate(foo), new object[] { }); } } else { if(OnBazChanged != null) OnBazChanged(); } } 什么是锁(新对象())在这里做? 应该没有任何效果,因为它总是locking在另一个对象上,但是这种locking在整个代码中都是永久的,即使在非复制粘贴的部分。 这是C#语言中的一些特殊情况,是编译成我不知道的东西,还是程序员只是采用了一些前一段时间碰巧工作的货物邪教?

静态constexprvariables是否有意义?

如果我有一个函数内的variables(比如说一个大数组),声明它是static还是constexpr有意义的? constexpr保证数组是在编译时创build的,那么static是无用的吗? void f() { static constexpr int x [] = { // a few thousand elements }; // do something with the array } static实际上是根据生成的代码还是语义来做任何事情?