2017-04-15 50 views
-5

试图弄清楚我是否想要运行一个数字长达5千万的数字,它将花费多少时间才能体现在一台体面的i7个人电脑上,您会推荐什么语言?另外,我想随着时间推移扩展它,所以需要一种语言,当我说30个数字的长数字时,它可以是灵活的。现在基本上我以一个17位长的数字开始,因为在每次计算后我只关心较小的数字,所以它会变得更小。我只做分割和减法,不保留任何余数。思考?对数学校对语言的建议

+0

请参阅:[?为什么?“有人可以帮助我”不是一个实际问题(http://meta.stackoverflow.com/q/284236) – EJoshuaS

+0

“有人可以帮助我”是不是题。这是获得基础的最佳语言,所以我不会从错误的方式开始这个漫长的过程(需要几年才能到达我想去的地方)。很高兴有人给出了很好的建议。 –

回答

0

我敲了一个快速程序来测试需要多长时间,在这里我相信我已经使用了一个20位长的数字。我知道这不完全是你所要求的参数,但是它能很好地说明你可以期待什么样的速度。

这是如果你有兴趣的,我这里使用的是代码在i5-6200U @ 2.30GHz

50 Million Operations

运行。它不能够分割30位数字,但稍微调整一下就可以了。这是用C#编写的。

using System; 

namespace _50_Million 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.Write("Enter Number "); 
      string number = Console.ReadLine(); 
      Console.Write("What to divide by "); 
      string divide = Console.ReadLine(); 
      Console.Write("How many times "); 
      string d = Console.ReadLine(); 

      decimal previousNumber = Convert.ToDecimal(number); 
      decimal times = Convert.ToDecimal(d); 
      decimal divideDecimal = Convert.ToDecimal(divide); 
      var watch = System.Diagnostics.Stopwatch.StartNew(); 
      decimal newNumber = 0; 

      for (int i = 0; i < times; i++) 
      { 
        newNumber = previousNumber/divideDecimal; 
        previousNumber = newNumber;   
      } 

      watch.Stop(); 
      var elapsedMs = watch.ElapsedMilliseconds; 

      Console.WriteLine("It has taken " + elapsedMs + " millisecounds to divide " + number + " by " + divide + ", " + d + " times."); 
      Console.WriteLine("The Answer is " + newNumber); 
      Console.ReadLine(); 
     } 
    } 
} 
+0

太棒了。目标是根据数字列表根据所述数字或计算的产品(结果)运行不同的数字。从而减少每次击中的次数。这是一个很好的开始,并给了我需要的方向。非常感谢您的参与。 –

+0

我还有一个问题 - 加入到这个问题中,但是我正在处理的内容还有一个更进一步的概念。我已经花了多年的时间在这方面手工,我很抱歉,如果它是第二性质的这么多自动化。很明显,我现在被禁止提问,因为这有很多问题。有点令人失望,因为我总是参考这个网站,第一次我坐下来寻求帮助和指导。感谢Max的指导。我将指派我的团队用C#编写它来证明我所做的工作。想看看是否有任何类似的方法,我找不到任何,猜我不能问。 –