小编Dan*_*iel的帖子

为什么我的C#程序在分析器中更快?

我有一个相对较大的系统(到目前为止约25000行)用于监控无线电相关设备.它使用最新版本的ZedGraph显示图表等.该程序使用Win7上的VS2010上的C#进行编码.问题是:

  • 当我从VS内部运行程序时,它运行缓慢
  • 当我从构建的EXE运行程序时,它运行缓慢
  • 当我通过Performance Wizard/CPU Profiler运行程序时,它会运行Blazing Fast.
  • 当我从构建的EXE运行程序,然后启动VS并将探查器附加到任何其他进程时,我的程序加速了!

我希望程序能够快速运行!

解决方案中的每个项目都设置为RELEASE,Debug非托管代码为DISABLED,定义DEBUG和TRACE常量为DISABLED,优化代码 - 我尝试了,警告级别 - 我试过,抑制JIT - 我试过,或者我试过所有StackOverflow上已经提出的解决方案 - 没有成功.程序在分析器外部很慢,在分析器中很快.我不认为问题出在我的代码中,因为如果我将探查器附加到其他不相关的进程中它会变得很快!

请帮忙!我真的需要它在各地快速,因为它是一个关键业务应用程序和性能问题是不能容忍的...

更新1 - 8跟随

-------------------- UPDATE1:--------------------

问题似乎与ZedGraph无关,因为在我用自己的基本绘图替换ZedGraph之后它仍然存在.

-------------------- UPDATE2:--------------------

在虚拟机中运行该程序,该程序仍然运行缓慢,并且从主机运行的探查器不会使它快速.

-------------------- UPDATE3:--------------------

启动屏幕捕获到视频也可以加快程序的速度!

-------------------- UPDATE4:--------------------

如果我打开英特尔图形驱动程序设置窗口(这个东西:http://www.intel.com/support/graphics/sb/img/resolution_new.jpg),只是不断地将光标悬停在按钮上,这样它们就会发光,等等,我的节目加快了!如果我运行GPUz或Kombustor,它不会加速,因此没有GPU上的超频 - 它保持稳定850Mhz.

-------------------- Update5:--------------------

测试不同的机器:

- 在配备Intel HD2000的Core i5-2400S上,UI运行缓慢,CPU使用率约为15%.

- 在配备英特尔G41 Express的同事的Core 2 Duo上,UI运行速度很快,但CPU使用率约为90%(这也不正常)

- 在配备专用Radeon X1650的酷睿i5-2400S上,UI运行速度极快,CPU使用率约为50%.

-------------------- Update6:--------------------

一段代码,显示我如何更新单个图形(graphFFTZedGraphControl易于使用的封装):

public void LoopDataRefresh() //executes in a new thread
        {
            while (true)
            {
                while (!d.Connected)
                    Thread.Sleep(1000);
                if (IsDisposed)
                    return; …
Run Code Online (Sandbox Code Playgroud)

.net c# performance profiler zedgraph

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

如何在通过 ChannelFactory 创建的 WCF 服务上设置回调通道?

我需要我的 WCF 服务来向客户端引发事件。我已经读到通过回调通道发生这种情况,并且我已经通过以下方式实现了它:服务接口:

public interface IServiceCallback
{
    [OperationContract(IsOneWay = true)]
    void OnNewAlert(Alert a);
    [OperationContract(IsOneWay = true)]
    void OnProductEdited(Product p);
    [OperationContract(IsOneWay = true)]
    void OnHighlightChanged(Dictionary<User, List<Product>> highlighted);
    [OperationContract(IsOneWay = true)]
    void OnCatalogUpdated();


    event EventHandler NewAlert;
    event EventHandler ProductEdited;
    event EventHandler HighlightChanged;
    event EventHandler CatalogUpdated;
}
[ServiceContract(CallbackContract = typeof(IServiceCallback))]
public interface IService : IDisposable
{
    [OperationContract]
    List<Product> GetProducts(Predicate<Product> match = null, int limit = 0, string username = null);
    [OperationContract]
    Product GetProduct(Predicate<Product> match, string username = null);
    [OperationContract]
    Product GetRandomProduct(Predicate<Product> match = …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf client-server callback

5
推荐指数
0
解决办法
2356
查看次数

公共抽象类中实现内部接口的抽象方法不能编译?

internal interface I_Foo
{
    void Bar();
}

public abstract class A_Foo : I_Foo
{
    public A_Foo() { }
    abstract void I_Foo.Bar();
}

public class Foo : A_Foo
{
    public Foo() : base() { }
    internal override void Bar()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

你好!我试图让一些方法对外部代码可见,而其他方法只对我的程序集可见.为此,我提出,实施A_Foo和I_Foo内部接口I_Foo作为合同到组件的其他部分,公共抽象A_Foo作为抽象为外部代码,并集中了一些构造函数的功能,和几个不同类别的Foo明确保留内部修饰符.

但是,在A_Foo类中,我得到了

'A_Foo.I_Foo.Bar()'必须声明一个正文,因为它没有标记为abstract,extern或partial

即使该方法明确标记为"抽象".如果我添加一个正文,我会得到"抽象不是一个有效的修饰符".

我需要显式声明这个方法,以便在公共类中内部,我需要它是抽象的,所以我可以在实际的实现Foo中覆盖它.

为什么编译器不允许我?还有另一种方法可以达到同样的目的吗?谢谢.

c# inheritance

3
推荐指数
1
解决办法
475
查看次数

MySQL在做什么?引导时100%的磁盘利用率

我在Win10机器上有一个大型数据库,mysqld.exe会执行许多磁盘I / O(100%),并且持续数小时以100MB / s的速度持续写入-主要是写入-多次重启后仍然存在。我怎样才能知道它到底在做什么,并阻止它?我知道数据库目前未被使用,我想弄清楚该I / O来自何处并停止它。我在互联网上找到的唯一解决方案是常规配置建议,我不需要,我现在需要关闭此设备!

show processlist不显示任何内容。

更新:问题是在表上进行大量后台回滚操作。解决方案是:

1) kill mysqld.exe
2) add innodb_force_recovery=3 to my.ini
3) start mysqld.exe
4) export the table (96GB table resulted in about 40GB .sql file)
5) drop the table
6) kill mysqld.exe
7) set innodb_force_recovery=0 to my.ini
8) reboot and import the table back
Run Code Online (Sandbox Code Playgroud)

目前还没有关于数据完整性的想法,但是看起来还不错。

感谢米尔尼。

mysql database disk utilization server

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

如何在C#中自动化汇编文件版本

可以通过将程序集版本指定为"1.0.*"来自动增加程序集版本,它会自动确定构建版本和修订版本号.但是,如果有人希望他们的文件版本与大会版本相同,出于一致性或其他原因,如何在不每次手动输入的情况下实现这一目标?"1.0.*"方法不适用于AssemblyFileVersion.

c# version increment .net-assembly

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