此示例代码在四核处理器上比较串行方法和线程方法.代码只使用GetPixel()来读取4个图像中的所有像素.我发现速度提高了大约65%,为什么它不等于75%,因为我有4个核心并且所有这些都被充分利用了?
PS:
您可以检查代码,因为我没有执行任何I/O,并且没有其他进程在机器上工作(正常的Windows进程)
我问的是,当我要使用c#开发客户端应用程序来显示库存数据并进行一些用户交互时,请给我链接以获取之前阅读过的最佳教程
如果要求经常变化并且您希望及时交付代码,那么用于克服意大利面条的最佳解决方案或方法是什么?
我想知道这些信息以减少我的代码大小,所以我不会浪费时间来优化将由编译器或JIT完成的事情.
例如:
如果我们假设编译器内联调用属性的get函数,那么我不必将返回值保存在局部变量中以避免函数调用.
我想推荐一个描述正在发生的事情的好参考?
我发现了一个测量功能性能的好问题,答案建议使用秒表,如下所示
Stopwatch sw = new Stopwatch();
sw.Start();
//DoWork
sw.Stop();
//take sw.Elapsed
Run Code Online (Sandbox Code Playgroud)
但如果您在多处理器机器下运行,这是否有效?线程可以切换到另一个处理器,可以吗?同样的事情也应该在Enviroment.TickCount中.如果答案是肯定的,我应该将我的代码包装在BeginThreadAffinity中,如下所示
Thread.BeginThreadAffinity();
Stopwatch sw = new Stopwatch();
sw.Start();
//DoWork
sw.Stop();
//take sw.Elapsed
Thread.EndThreadAffinity();
Run Code Online (Sandbox Code Playgroud)
PS
切换可以在线程级别上发生,而不仅仅是处理器级别,例如,如果函数在另一个线程中运行,那么系统可以将其切换到另一个处理器,如果发生这种情况,秒表在切换后是否有效?
我不是仅使用秒表进行性能测量,而是使用Thread.Sleep模拟定时器功能(以防止呼叫重叠)
当我在VS2005中使用条件断点而不是使用临时代码来检查特定条件时,我注意到它需要更多时间并且执行速度会降低!! 你知道为什么吗?以及如何解决这个问题?
〔实施例:
int sequence = atoi(m_SequenceNumber.GetAscii());
if( sequence == 392914)//temporary code to check to step into code
{
int x = 0;//I put breakpoint here
}
Run Code Online (Sandbox Code Playgroud)
之前的代码将比我使用条件断点(sequence == 392914)更快地执行
以下代码导致编译器错误,因为它是不明确的调用,但问题是如果我们使用object而不是ArrayList没有错误发生,string版本工作正常; 你对此有解释吗?
class A
{
public A(string x)
{
Console.WriteLine("string");
}
public A(ArrayList x)
{
Console.WriteLine("ArrayList");
}
}
static void Main(string[] args)
{
A o = new A(null);
}
Run Code Online (Sandbox Code Playgroud) 在.NET中,我怎么知道类或方法是否是线程安全的?默认情况下它不是线程安全的吗?
考虑:
class A
{
public:
A( int val ) : m_ValA( val ) {}
A( const A& rhs ) {}
int m_ValA;
};
class B : public A
{
public:
B( int val4A, int val4B ) : A( val4A ), m_ValB( val4B ) {}
B( const B& rhs ) : A( rhs ), m_ValB( rhs.m_ValB ) {}
int m_ValB;
};
int main()
{
A* b1 = new B( 1, 2 );
A* b2 = new A( *b1 ); // ERROR...but …Run Code Online (Sandbox Code Playgroud) 我有一组依赖于其他项目的项目(你可以说实用程序),问题是我每次更改其中任何一个实用程序的代码时,我的同事需要采用最新的代码并在他们的机器上构建使用最新的组件.有一个很好的标准解决方案吗?或者只是将dll集中在共享文件夹上?
PS:
我们正在使用MS source safe 2005,我不希望我的同事每次都使用源代码并在他们的机器上构建,因为他们只需要二进制文件而不是代码.
c# ×6
.net ×2
c++ ×1
debugging ×1
dependencies ×1
jit ×1
methodology ×1
multicore ×1
optimization ×1
performance ×1
winforms ×1