小编Sup*_*man的帖子

XElement的孩子

我如何才能获得XElement的孩子?

我目前正在使用XElement.Descendants()函数,它返回所有级别的XElements,而不仅仅是子节点.

我真正想要的只是孩子们的IEnumerable.

c# xml xelement linq-to-xml

63
推荐指数
2
解决办法
5万
查看次数

十进制与双速

我写财务应用程序,我经常决定使用双倍与使用小数.

我的所有数学都适用于小数不超过5位且不大于~100,000的数字.我觉得所有这些都可以表示为双打而不会出现舍入错误,但从未确定过.

我会继续从小数转换为双倍以获得明显的速度优势,除了在一天结束时,我仍然使用ToString方法将价格传送到交易所,并且需要确保它始终输出数字I期望.(89.99而不是89.99000000001)

问题:

  1. 速度优势真的和天真的测试一样大吗?(~100次)
  2. 有没有办法保证ToString的输出成为我想要的?我的号码总是可以表示的吗?

更新:在我的应用程序可以运行之前,我必须处理大约100亿次价格更新,并且我已经实现了带有小数的明显保护原因,但是只需要约3个小时才能打开,双打会大大减少我的开启时间.有没有一种安全的方法来做双打?

double finance decimal

49
推荐指数
6
解决办法
2万
查看次数

x64 vs x86性能注意事项.Net

我试图了解在x64和x86中运行本机C#/ .Net 4.0应用程序时存在哪些性能差异.我理解内存注意事项(x64寻址所有内存,x86限制为2/4gb),以及x64应用程序将使用更多内存的事实(所有指针都是8字节而不是4字节).据我所知,这些都不应该影响任何时钟时钟指令,为64管线是足够宽,能够处理更广泛的说明.

由于每个线程的堆栈大小较大,上下文切换是否会影响性能?我在评估两者时缺少哪些性能考虑因素?

c# performance 64-bit

20
推荐指数
2
解决办法
6463
查看次数

NuGet VS 2012 ServicePointManager不支持使用https方案的代理

我最近从VS2012 RC升级到RTM,自从升级到RTM后,我再也无法访问nuget了.我在Manage NuGet Packages窗口中收到以下错误.

The ServicePointManager does not support proxies with the https scheme.
Run Code Online (Sandbox Code Playgroud)

我在之前的堆栈溢出问题中查看此处提供的解决方案,但它并不适用于我,因为我不在防火墙后面(当然不应该通过http://whatismyipaddress.com/proxy-check验证).我还可以看到RSS feeds/VS可以访问其他网络资源,在上一个问题中,问题与所有VS互联网流量有关,而不仅仅是NuGet,就像我的情况一样.

可能导致这种情况的任何想法,或者如何恢复对NuGet的访问?我在工作的机器上和家里的个人电脑上试过这个,都有同样的效果.

c# nuget visual-studio-2012

20
推荐指数
4
解决办法
2万
查看次数

.Net平台目标优化

我在VS 2010中注意到C#项目的默认平台目标是x86(它曾经是任何CPU),并且想知道为什么要进行更改.

编译器是否基于将平台修复为x86 vs x64 vs任何CPU来执行任何优化?

出于性能原因,我应该将我的应用程序强制转移到一个平台还是另一个平台?

.net c#

13
推荐指数
1
解决办法
1715
查看次数

.Net Round Bug

可能重复:
在C#中:Math.Round(2.5)结果是2(而不是3)!你在跟我开玩笑吗?

.Net 3.5 SP1的Math.Round函数似乎将0.5舍入为零,而它的舍入值为1.5到2.0.我用十进制数测试了这个,以下代码:

decimal pos = 0.5m;
decimal neg = -0.5m;

Console.WriteLine("Pos: {0} Rnd: {1}", pos, Math.Round(pos));
Console.WriteLine("Neg: {0} Rnd: {1}", neg, Math.Round(neg));

Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

此代码输出以下内容:

Pos:0.5 Rnd:0 Neg:-0.5 Rnd:0

这似乎是一个明显的错误.有一个已知的工作吗?我在Core2处理器和i7上测试了这个,所以它似乎不是硬件.而Reflector只是说decimal.round函数最终调用系统调用.

让我知道是否有其他人看到这个.

c# math rounding

10
推荐指数
0
解决办法
2050
查看次数

C#安全地将小数转换为int

我试图安全地将小数转换为整数.

就像是

public static bool Decimal.TryConvertToInt32(decimal val, out int val)
Run Code Online (Sandbox Code Playgroud)

如果它不能转换为整数,则返回false;如果可以,则返回true.

这是为了避免在decimal.ToInt32方法中捕获OverflowException.最简单的方法是什么?

c# decimal

10
推荐指数
1
解决办法
3300
查看次数

匿名类型到实际类重构

有没有一种简单的方法可以将匿名类型重构为类?我经常使用匿名类型对我的代码进行原型设计,然后必须返回并重新实现各种类,因为它们需要在本地范围之外使用.我正在使用resharper,并想知道是否有一个简单的方法来做到这一点.

c# resharper anonymous-types

9
推荐指数
1
解决办法
1051
查看次数

确定正在运行的垃圾收集器

我正在Windows Server 2003 x64(2x Xeon 4核心触发器)上运行一个大型.net 4.0 x86应用程序,并且遇到了我的应用程序〜每天2-3次冻结30秒,然后恢复正常运行的问题.该应用程序每周只重启一次,消耗400-800 MB的内存,所以我假设这些冻结是垃圾收集.我只看到日志中的冻结,而不是现场,或者我会检查任务管理器确认.

我试图找出哪个.Net 4 GC正在运行,以及如何将GC切换到新的并发背景gc(如果不是),或者如何确认这些实际上是GC(Procmon不显示.Net) Win2k3服务器中的仪器).

.net garbage-collection

9
推荐指数
2
解决办法
6983
查看次数

托管堆.Net 4.5中的未知对象

我在服务器类Windows 2012 R2机器上遇到麻烦,偶尔会将其托管的.net堆增加到10GB以上(通常应该是1-2 GB).我在Gen2集合之后对此框进行了内存转储,以尝试查找在堆上分配的对象.

使用WinDbg/SOS

!dumpheap -stat
Run Code Online (Sandbox Code Playgroud)

生成一个对象列表,其中最大的是〜150mb的内存,并快速下降.将此输出拉入excel并添加TotalSize,我只获得1.5 GB的对象(符合我的预期).

              MT    Count    TotalSize Class Name
00007ffb1ab87a70        1           24 System.Collections.Generic.GenericEqualityComparer`1[[System.UInt64, mscorlib]]
...
00007ffabc178e40   218274     36670032 Ten.RunBar
00007ffabbd172f8  1048576     41943040 Ten.DisruptorTaskTuple
00007ffb1a0502c0   442990     71357200 System.Object[]
00007ffabc1bbce0   676327     97391088 Ten.BalTuple
00007ffabbd5eea8  2342912    149946368 Ten.Run.TaskAction
0000001bf119dc70  1072558    787427166      Free
MANUALLY CALCULATED TOTAL:  1589298584
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是有一些非托管内存泄漏所以我检查了堆

!EEHeap -gc
Run Code Online (Sandbox Code Playgroud)

这表明GC堆大小本身实际上是10GB

Number of GC Heaps: 1
generation 0 starts at 0x0000001e10623cb0
generation 1 starts at 0x0000001e10485bb0
generation 2 starts at 0x0000001b80001000
ephemeral segment allocation context: none
 segment     begin allocated …
Run Code Online (Sandbox Code Playgroud)

.net c# memory memory-leaks windbg

8
推荐指数
1
解决办法
517
查看次数