小编MrK*_*ins的帖子

Decimal.GetHashCode取决于尾随零

可能重复:
C#为什么相等的小数会产生不相等的哈希值?

我在我的.NET 3.5应用程序(x86或x64,我试过两个)中遇到了一个问题,其中具有不同数量的尾随零的小数具有不同的哈希码.例如:

decimal x = 3575.000000000000000000M;
decimal y = 3575.0000000000000000000M;

Console.WriteLine(x.GetHashCode());
Console.WriteLine(y.GetHashCode());
Console.WriteLine(x == y);
Console.WriteLine(x.GetHashCode() == y.GetHashCode());
Run Code Online (Sandbox Code Playgroud)

在我的机器上输出以下内容:

1085009409
1085009408
True
False
Run Code Online (Sandbox Code Playgroud)

我认为哈希码的差异是由不同比例因子引起的两个数字的不同内部表示.

虽然我可以通过删除尾随零来解决这个问题,但我总是假设GetHashCode应该为x和y返回相同的值,如果x == y.这个假设是错误的,还是Decimal.GetHashCode的问题?

编辑:要清楚我正在使用Visual Studio 2008 SP1,.NET 3.5的版本.

.net c#

16
推荐指数
2
解决办法
464
查看次数

.NET的通用性能测试框架

我有一个用C#/ .NET 3.5编写的客户端/服务器应用程序,我想对其进行一些性能测试.我一直在寻找一个通用的框架来帮助我,但没有太多运气.我想要一些可以管理一组客户端并根据某些设置为它们执行随机操作的东西.然后我还想记录一些与此相关的数据,以帮助我为我的系统工作超出粗略的阈值,例如,我可以支持n个用户每秒执行x次操作.

我会编写特定于我的应用程序的代码来执行以下任务:

  • 登录/注销客户端.
  • 将消息发送到服务器以执行各种操作.
  • 记录来自服务器的确认和其他消息.
  • 测量特定于系统的统计信息.

我希望框架能够采用一组参数来描述测试场景,例如:

  • 在给定时间登录的客户端数.
  • 每个客户端每秒执行一定数量的操作.

然后它将运行场景,管理和跟踪所有用户和操作并整理所有数据.(这是我试图避免自己编码的无聊位...)理想情况下,它会内置一些常规测量,例如发送消息和接收响应之间的时间,但如果没有,我可以自己编码.

我不想对我的代码进行任何分析; 我可以随后在运行这些测试时附加一个分析器.相反,我想对我的系统作出一些粗略的结论,即在断开之前我可以抛出多少用户.(如果有一个比'性能测试'更好的术语,请告诉我......压力测试可能吗?)

我意识到我在这里没有提供很多关于系统的细节.这让我感觉相当普遍 - 我确信有很多客户端/服务器系统需要人们进行类似的测试.我发现很多基于Web的框架都可以做类似的事情,但它们看起来很网络,并且不适合非基于HTTP的系统.

有人知道任何可能有用的东西吗?我的搜索还没有找到任何东西.我应该指出,我已经坚持使用Visual Studio 2008 Professional以实现可预测的未来,所以如果2010年可以做到这一点,那对我来说是不合适的.我想它不一定是.NET框架,只要我仍然可以很容易地插入我的.NET代码.

编辑要清楚我的应用程序不是一个网站,它是一个Windows窗体客户端应用程序,通过自定义协议连接到.NET服务.我可以编写代码来执行相关的客户端操作,我只需要一个框架来放入它.

.net c# testing performance

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

任何经历过VS2010慢速构建的人?

我们最近升级到VS2010的最终版本,并且与2008年相同的代码相比,构建时间非常慢.我想知道是否有其他人正在经历相同的情况,所以我可以确定它是否只是我们的环境?一些细节:

  • 在Windows 7上使用VS2010 Ultimate和相当强大的机器,与TFS 2010交谈.
  • 该解决方案已从VS2008升级,但仍然针对.NET 3.5和ASP.NET MVC 1.0构建.
  • 它似乎不是编译本身需要很长时间,而是构建过程中的其他东西.这是因为即使是最新且不需要编译的项目也需要几秒钟左右的时间来处理.
  • 这不是因为Visual Studio插件,因为团队中的几个人没有安装任何插件.
  • 加载VS2010后的第一个构建非常快,然后它们似乎随着时间的推移而减速.例如,我的解决方案中的项目刚刚在00:00:00.08之后重新启动后进行处理.(该项目是最新的,不需要编译)然后我立即点击重建,它跳到00:00:01.33.
  • 我们也遇到了另一种使用.NET 4.0的解决方案的问题,该解决方案在VS2010 RC下构建完美.
  • 没有构建事件或类似的东西我可以责怪,只是直接的汇编构建.
  • 在慢速构建期间,IDE的响应速度不是很快.

其他人有类似的问题吗?

更新:看起来解析程序集引用需要很长时间.查看MSBuild诊断输出或上面的示例,第一个版本的ResolveAssemblyReferences有30ms,第二个版本有800ms.后续构建似乎需要更长时间的复制,例如CopyFilesToOutputDirectory从1ms跳到27ms.

visual-studio-2010

7
推荐指数
1
解决办法
9837
查看次数

标签 统计

.net ×2

c# ×2

performance ×1

testing ×1

visual-studio-2010 ×1