小编Jon*_*rop的帖子

在WPF画布上的给定点处居中文本

我有Controls.Canvas几个形状,并希望添加以给定点为中心的文本标签(我正在绘制带有标记顶点的树).在WPF中以编程方式执行此操作的最简单方法是什么?

我尝试过设置RenderTransform和调用Controls.Canvas.SetLeft等,但是没有将标签放在我想要的位置.WPF似乎只支持在给定的左,右,顶部和底部坐标处定位,而不是以给定坐标为中心,Width属性是NaN,并且ActualWidth属性是0.0我构造时的属性Canvas.

.net c# wpf f#

18
推荐指数
2
解决办法
1万
查看次数

纯功能软堆

在任何语言中是否有任何纯功能软堆数据结构的实现?

functional-programming data-structures soft-heap

16
推荐指数
1
解决办法
1511
查看次数

你能否重现这个64位.NET 4 GC错误?

更新:微软现在已经复制了这个bug并正在修复.

在评估.NET平台的低延迟软件开发的可行性的同时,我们发现了.NET 4并发工作站垃圾收集器中的一个严重错误,它可能导致应用程序一次挂起几分钟.

在我们的三台机器上,以下简单的C#程序导致GC泄漏内存,直到没有剩余并且单个庞大的GC循环启动,使程序停止几分钟(!),同时回收11Gb堆:

    static void Main(string[] args)
    {
        var q = new System.Collections.Generic.Queue<System.Object>();
        while (true)
        {
            q.Enqueue(0);
            if (q.Count > 1000000)
                q.Dequeue();
        }
    }
Run Code Online (Sandbox Code Playgroud)

您需要在使用.NET 4的64位Windows操作系统上编译x64,并使用默认(交互式)延迟设置运行默认(并发工作站)GC.

以下是在此计算机上运行此程序时任务管理器的外观:

替代文字

请注意,当此程序需要不超过100Mb的内存时,此处已泄漏了11Gb的堆.

我们现在已经积累了大约十二个这个bug的重复,用F#和C#编写,当大多数gen0存活时,它似乎与GC写入障碍中的一个错误有关.但是,微软还没有能够重现它.你能?如果是这样,您能否尽可能准确地描述您的设置,以便我们可以尝试精确缩小此错误所需的条件.

.net garbage-collection

16
推荐指数
1
解决办法
1621
查看次数

WCF性能,延迟和可伸缩性

我正在尝试将F#中的简单异步TCP服务器移植到C#4.服务器接收连接,读取单个请求并在关闭连接之前回送一系列响应.

C#4中的异步看起来很乏味且容易出错,所以我想我会尝试使用WCF.该服务器不太可能在野外看到1,000个同时发出的请求,因此我认为吞吐量和延迟都很重要.

我在C#中编写了一个最小的双工WCF Web服务和控制台客户端.虽然我使用的是WCF而不是原始套接字,但这已经是175行代码,而原始版本只有80行.但我更关注性能和可扩展性:

  • WCF的延迟是154倍.
  • WCF的吞吐量低54倍.
  • TCP可以轻松处理1,000个并发连接,但WCF仅在20个时间内阻塞.

首先,我正在使用所有内容的默认设置,所以我想知道是否有任何我可以调整来改善这些性能数据?

其次,我想知道是否有人正在使用WCF进行此类事情,或者它是否是错误的工具?

这是我在C#中的WCF服务器:

IService1.cs

[DataContract]
public class Stock
{
  [DataMember]
  public DateTime FirstDealDate { get; set; }
  [DataMember]
  public DateTime LastDealDate { get; set; }
  [DataMember]
  public DateTime StartDate { get; set; }
  [DataMember]
  public DateTime EndDate { get; set; }
  [DataMember]
  public decimal Open { get; set; }
  [DataMember]
  public decimal High { get; set; }
  [DataMember]
  public decimal Low { get; set; }
  [DataMember]
  public decimal Close { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# wcf f# tcp

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

Mathematica是一种无类型的语言吗?

与大多数编程语言不同,Mathematica中的每个值都是一个表达式.对任何表达式应用任何操作总会产生另一个表达式 因此,Mathematica实际上只有一种类型.Mathematica没有静态类型检查,可以说,甚至不动态检查类型(在运行时).

例如,将整数表达式添加1"foo"Mathematica中的字符串表达式会导致(无意义)表达式1 + "foo"但没有错误.在其他情况下,Mathematica提供有关无意义输入的反馈,但生成此反馈的检查必须由程序员明确执行.

因此,将Mathematica描述为无类型语言而不是静态或动态类型语言是否公平?

types wolfram-mathematica

15
推荐指数
5
解决办法
4067
查看次数

多核编程:硬件

我正在写一本关于使用.NET 4进行多核编程的书,我很想知道人们发现多核编程的哪些部分难以理解或预计难以理解?

.net c# parallel-processing f# multicore

14
推荐指数
4
解决办法
2051
查看次数

.NET 4垃圾收集器的可伸缩性

我最近对.NET 4垃圾收集器进行了基准测试,从多个线程中集中分配.当分配的值记录在一个数组中时,我没有像我预期的那样观察到没有可伸缩性(因为系统争用对共享旧代的同步访问).但是,当分配的值立即被丢弃时,我惊恐地发现没有可扩展性!

我曾预计临时案例几乎是线性扩展的,因为每个线程应该简单地擦除托儿所gen0干净并重新开始而不争用任何共享资源(没有任何东西幸存到老一代并且没有L2缓存未命中因为gen0很容易适合L1缓存).

例如,这篇MSDN文章说:

无同步分配在多处理器系统上,托管堆的第0代将被分成多个内存竞技场,每个线程使用一个竞技场.这允许多个线程同时进行分配,因此不需要对堆进行独占访问.

任何人都可以验证我的发现和/或解释我的预测和观察之间的这种差异吗?

c# f# garbage-collection multicore

14
推荐指数
2
解决办法
2564
查看次数

安全快速的FFT

灵感来自Herb Sutter引人注目的讲座不是你父亲的C++,我决定再使用微软的Visual Studio 2010来看看最新版本的C++.我特别感兴趣的是Herb断言C++"安全而快速",因为我写了很多性能关键代码.

作为基准,我决定尝试用各种语言编写相同的简单FFT算法.

我想出了以下使用内置complex类型和vector集合的C++ 11代码:

#include <complex>
#include <vector>

using namespace std;

// Must provide type or MSVC++ barfs with "ambiguous call to overloaded function"
double pi = 4 * atan(1.0);

void fft(int sign, vector<complex<double>> &zs) {
    unsigned int j=0;
    // Warning about signed vs unsigned comparison
    for(unsigned int i=0; i<zs.size()-1; ++i) {
        if (i < j) {
            auto t = zs.at(i);
            zs.at(i) = zs.at(j);
            zs.at(j) = t;
        }
        int m=zs.size()/2;
        j^=m; …
Run Code Online (Sandbox Code Playgroud)

c++ performance fft c++11

14
推荐指数
1
解决办法
8365
查看次数

基于堆栈的字节码或无限注册机的优点

编译器通常选择基于堆栈或无限寄存器的中间表示(IR).这些过度表达树的优点是什么?

compiler-construction expression-trees intermediate-code

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

F#on Mono for Android

我从Xamarin购买了Mono for Android,到目前为止我印象非常深刻,除非我真的想用F#代替C#.有没有人设法使用此工具运行F#?

f# android xamarin.android

12
推荐指数
1
解决办法
1342
查看次数