- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我关于 SO 的第一个问题,如果它不合适/偏离主题,请告诉我。我已经把上面的问题提得相当笼统,但我遇到的具体问题如下:
我想编写一段 Java 代码,生成一个列表,列出所有可能导致选举人团平局的州组合。最短的可能列表将包含 12 个州,最长的可能列表将包含 38 个州。我做了一些(非常)粗略的计算,所有可能的组合都达到了(也许)10 千万亿。我仍处于算法的规划阶段,但假设 10 千万亿是所需步数的绝对下限,我想实际数字会高得多。
我对编程还很陌生,想知道是否值得编写这段代码 - 粗略计算表明该算法大约需要 30 年才能完成 (!)。但是,我的计算基于维基百科建议的 MIP(每秒百万条指令)值,我不知道它到底有多准确(或者实际上,对于这些目的,什么才算作“指令”)。
非常感谢阅读和/或回答:)
最佳答案
1 GHz 处理器的时钟每秒滴答 10 亿次。时钟滴答用于允许信号流通过系统。因此,理论上可以执行的(任何类型的)最大操作数是每秒 10 亿次操作。要执行 10 千万亿次运算,理论上的最短时间是 10 千万亿次除以 10 亿,得到 1000 万(秒)。如果我的计算是正确的,那么大约需要 116 天。在实践中,您不会获得那么多的性能,但是使用现代流水线处理器您实际上应该做得很好,比如说至少 50% 的优化汇编程序。因此,对于单个现代 1 GHz 处理器,我认为 200 天对于整数运算(如您在组合学中所期望的那样)是一个非常合理的猜测。
现在,您的“步骤”可能是很多机器指令。对于任何足够复杂的“步骤”,这似乎都是可能的。如果单个“步骤”是 100 条机器指令(一个相当强大的“步骤”),那么我们实际上谈论的更像是 20,000 天或 54 年。
现在,我们能做什么?好吧,生成组合非常适合并行编程。例如,如果您能够在 super 计算中心抽出一些时间并在 1000 个内核上运行这项工作,每个内核以 3 GHz 运行,则运行大约需要 7 天才能完成 - 考虑到非并行工作可能需要 10 天。
或者,如果您能想出一个聪明的算法来避免分支,您可以得到一些 NVIDIA GTX 980 并在家里运行它。每个显卡大约有 2,000 个内核,每个内核以 ~1 GHz 的速度运行,因此这些坏小子中的一些将极大地加快您的任务(同样,如果您可以以在显卡上高效的方式编写程序 - 即困难的部分)。
判决?可行,但代价高昂和/或困难 - 如果您不习惯编写大量并行程序来使您希望做的事情变得可行,则尤其困难。
关于java - 在 1 GHz 处理器上运行 10-100 千万亿步的算法需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37072486/
我有一个独立的 Thread 应用程序。这是一个等待消息的监听器,当消息到达时执行一些操作,其中我必须将消息保存在数据库中。但我遇到了问题,因为如果我运行应用程序并“手动发送消息”,一切都会正常工作,
我有以下php代码: sleep(65); $query = "UPDATE database.table SET XXXXXXX = XXXXXXX - ".$YYYYYY." WHERE
我正在开发一个业余爱好应用程序。它在主布局中使用 webview。单击 webview 内的链接会使用户保持在 webview 内。启动后一切正常,但仍在应用程序内。但是,在手机休眠一段时间后,我重新
我目前运行的应用程序需要最大堆大小为 16GB。 目前我使用以下标志来处理垃圾回收。 -XX\:+UseParNewGC, -XX\:+UseConcMarkSweepGC, -XX:CMSIniti
$ uname -a Darwin Wheelie-Cyberman 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun 7 16:33:36 PDT 2011
在 while 循环仍在休眠时退出它的最简单方法是什么?是否有某种函数可以在 sleep 时检测某个值是否为真? 或者我是否在循环中设置一个小 sleep 并检查如果不再睡一会儿就退出?如果可以,我该
我正在 Ubunu 的 Jetty 6 上运行 Java Web 服务器,用于基于反向 ajax 的 Web。而且我在向浏览器重新发送数据的线程滞后方面遇到了严重的问题。很多时候,一些线程开始 hib
当我运行长时间操作时,我遇到来自 IIS 的请求超时。我的 ASP.NET 应用程序正在后台处理数据,但处理的记录数量很大,因此操作需要很长时间。 但是,我认为 IIS 使 session 超时。这是
我不确定从哪里开始解决这个问题,但如果我有一个 AJAX 网络应用程序向服务器发送请求并在数据库(在我的例子中是 postgresql)上运行长查询,有没有办法停止或如果仍在运行时用户刷新页面或关闭
我是一名优秀的程序员,十分优秀!