相关疑难解决方法(0)

C#vs C - 性能差异很大

我发现C anc C#中类似代码之间存在巨大的性能差异.

C代码是:

#include <stdio.h>
#include <time.h>
#include <math.h>

main()
{
    int i;
    double root;

    clock_t start = clock();
    for (i = 0 ; i <= 100000000; i++){
        root = sqrt(i);
    }
    printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);   

}
Run Code Online (Sandbox Code Playgroud)

而C#(控制台应用程序)是:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime startTime = DateTime.Now;
            double root;
            for (int i = 0; i <= 100000000; i++)
            {
                root = Math.Sqrt(i);
            } …
Run Code Online (Sandbox Code Playgroud)

c c# performance

92
推荐指数
10
解决办法
8万
查看次数

最快的算法来检查一个数字是否是pandigital?

Pandigital数字是一个包含数字1..number长度的数字.
例如123,4312和967412385.

我已经解决了许多Project Euler问题,但Pandigital问题总是超过一分钟规则.

这是我的pandigital功能:

private boolean isPandigital(int n){
    Set<Character> set= new TreeSet<Character>();   
    String string = n+"";
    for (char c:string.toCharArray()){
        if (c=='0') return false;
        set.add(c);
    }
    return set.size()==string.length();
}
Run Code Online (Sandbox Code Playgroud)

创建自己的函数并使用此方法对其进行测试

int pans=0;
for (int i=123456789;i<=123987654;i++){
    if (isPandigital(i)){
         pans++;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用这个循环,你应该得到720个pandigital数字.我的平均时间是500毫秒.

我正在使用Java,但问题是对任何语言开放.

更新
@andras答案到目前为止是最好的时间,但是@Sani Huttunen的回答激发了我添加一个新的算法,它几乎与@andras相同.

c# java algorithm

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

关于WPF,Win32,MFC的棘手问题

假设您是一名具有C++和C#基础知识的IT学生.我们假设您要设计以下应用:

  1. 需要提供一些性能,如归档程序,加密算法,编解码器
  2. 利用一些系统调用
  3. 有一个gui

并且你想学习一个Api,它可以让你编写像前面描述的那样的应用程序,并且:

  1. 是主流
  2. 是未来的证据
  3. 有权让你找到一份体面的工作
  4. 很容易 - 我的意思很容易像VCL,不像winapi那么容易

那么,做出这些假设,你会选择什么Api?MFC,WPF,其他?我非常喜欢VCL和QT,但它们不是主流,我认为很少有雇主会要求你在QT或Visual C++ Builder中编写应用程序......

谢谢你的回答.

api wpf winapi mfc

10
推荐指数
2
解决办法
3416
查看次数

标签 统计

c# ×2

algorithm ×1

api ×1

c ×1

java ×1

mfc ×1

performance ×1

winapi ×1

wpf ×1