优化是改进方法或设计的行为。在编程中,优化通常采用提高算法速度或减少所需资源的形式。优化的另一个含义是机器学习中使用的数值优化算法。
我正在尝试以下竞争性编程问题: G.GCDland神秘阵 每次测试时间限制1秒 每个测试的内存限制 256 MB 在GCDland这个古怪的小镇里,住着一个
事实证明,当使用完全相同的编译器/环境/任何设置重新编译相同的程序时,C++ 编译器发出不同的机器代码是完全有效的。这意味着...
关于应用程序速度,最佳的 C++ 编译器和 Windows 构建选项?
我正在为 Windows、Mac 和 GNU 制作游戏,我可以使用 MSVC 和 MingW 在 Windows 上构建它...... 但我没有找到有关编译器优化程度的良好信息。 那么什么编译器,...
注意:我注意到我发布的示例中存在一些错误 - 进行编辑以修复它 如果您不启用优化,官方 C# 编译器会执行一些有趣的操作。 例如,一个简单的 if 语句: 我...
嘿,所以我构建了一个过滤组合列表的脚本,它只输出不会重复超过2次的组合,但它超级慢,这是我的脚本: 嘿,所以我构建了一个过滤组合列表的脚本,它仅输出不会重复超过 2 次的组合,但它超级慢,这是我的脚本: <?php ini_set('max_execution_time', '-1'); ini_set('memory_limit', '-1'); $fileCombo = file("ww.txt", FILE_IGNORE_NEW_LINES); $output = fopen("workpless.txt", "a") or die("Unable to open file!"); //all domains of the entire list $domains = array(); //only domains that repeat themself less than 2 times $less = array(); //takes the combo list explode it to domain names foreach ($fileCombo as $combo) { $pieces = explode(":", $combo); $email = explode("@", $pieces[0]); //import domains to array $domains[] = strtolower($email[1]); } //count each string in the array $ac = array_count_values($domains); //this foreach just filter all the domains that not repeat themself over 2 times foreach ($ac as $email => $item) { if($item <= 2) { $less[] = $email; } } /* this foreach is the one that makes all the trubles, it takes all the domains that the last foreach filtered and its runing it 1 by 1 on the entire combo list to get the actual combo */ foreach ($less as $find) { $matches = array_filter($fileCombo, function($var) use ($find) { return preg_match("/\b$find\b/i", $var); }); foreach ($matches as $match) { $data = $match . PHP_EOL; fwrite($output, $data); } } fclose($output); ?> 伪代码(我能做的最好的): file1: [email protected]:password [email protected]:password [email protected]:password [email protected]:password [email protected]:password array "fileCombo" load file1 into the array splitting each line by ":" so you will get [0][email protected], [1]password splitting value [0] by "@" so you will get [0]example, [1]example.com putting value [1] into new array called "domains" counting how many duplicates of each domain putting all the domains that have less than 2 dupes inside new array that called "less" runing 1 by 1 each domain in "less" array on "fileCombo" array if "less" value was found inside "fileCombo" array value Than write the entire line from "fileCombo" into a text file 这个脚本用于每次 2~5M 行的大文件,这就是为什么我需要优化它(当你在上面运行 20k 行时它很快)。 以下应该是适合您的情况的最“简洁”的解决方案。但是您应该在大文件上测试它(2~5M): 比方说,file1.txt 包含这些行: [email protected]:password [email protected]:password [email protected]:password [email protected]:password [email protected]:password $combos = file_get_contents("file1.txt"); preg_match_all("/\b\S+?@(\S+?):\S+?\b/m", $combos, $matches); $less = array_filter(array_count_values($matches[1]), function ($v){ return $v <= 2; }); // $matches[0] - is an array of lines // $matches[1] - is an array of domains in respective positions as lines $matched_lines = ""; foreach (array_keys($less) as $domain) { $matched_lines .= $matches[0][array_search($domain, $matches[1])] . PHP_EOL; } if ($matched_lines) { file_put_contents("workpless.txt", $matched_lines, FILE_APPEND); } // Now "workpless.txt" contains the following lines: [email protected]:password [email protected]:password 更新: 显示该域的所有相关行,但 1M 行文件需要花费 5 秒以上的时间 在 80,000 行(40,000 条独特行)上进行测试 - 2.5 MB Memory Usage 69,994,816 bytes 70,246,808 bytes (process) 71,827,456 bytes (process peak) Execution Time 0.54409 seconds 在 1,000,000 行(500,000 条独特行)上进行测试 - 33 MB Memory Usage 864,805,152 bytes 865,057,144 bytes (process) 866,648,064 bytes (process peak) Execution Time 8.9173 seconds 我的测试机是 i7-3612QM (CPU Mark 6833) 4GB RAM SSD 来自 80,000 行文件的样本 [email protected]:password [email protected]:password [email protected]:password [email protected]:password [email protected]:password [email protected]:password [email protected]:password [email protected]:password 这是您的新版本:)) <?php // System Start Time define('START_TIME', microtime(true)); // System Start Memory define('START_MEMORY_USAGE', memory_get_usage()); function show_current_stats() { ?> <b>Memory Usage</b> <pre> <?php print number_format(memory_get_usage() - START_MEMORY_USAGE); ?> bytes <?php print number_format(memory_get_usage()); ?> bytes (process) <?php print number_format(memory_get_peak_usage(TRUE)); ?> bytes (process peak) </pre> <b>Execution Time</b> <pre><?php print round((microtime(true) - START_TIME), 5); ?> seconds</pre> <?php } // Script start here $fileCombo = file("ww.txt", FILE_IGNORE_NEW_LINES); $output = fopen("workpless.txt", "a") or die("Unable to open file!"); //all domains of the entire list $domains = array(); //only domains that repeat themself less than 2 times $less = array(); //let make relateion between domains and its position(keys) in fileCombo $domains_keys = array(); //takes the combo list explode it to domain names foreach ($fileCombo as $key => $combo) { $pieces = explode(":", $combo); $email = explode("@", $pieces[0]); //import domains to array $domains[] = strtolower($email[1]); // check if domain exists or create new domain in $domains_keys array if (isset($domains_keys[strtolower($email[1])] )) { $domains_keys[strtolower($email[1])][] = $key; } else { $domains_keys[strtolower($email[1])] = array($key); } } //count each string in the array $ac = array_count_values($domains); //this foreach just filter all the domains that not repeat themself over 2 times foreach ($ac as $email => $item) { if($item <= 2) { $less[] = $email; } } foreach ($less as $find) { array_map(function($domain_key) use ($fileCombo, $output) { $data = $fileCombo[$domain_key] . PHP_EOL; fwrite($output, $data); }, $domains_keys[$find]); } fclose($output); // uncomment to show stats : Credit go to micromvc /* show_current_stats(); */ 输出 [email protected]:password [email protected]:password [email protected]:password [email protected]:password [email protected]:password
在 Mac 上使用 Clang/LLVM 加速和优化 C++ 程序
好的,这是我的问题: 我正在开发一个超级复杂的项目,速度和性能至关重要 - 有很多麻烦和低级的东西(你可能会问我是否有什么具体的事情...
我有一个情况,我有一个对列表,每个对都有两个数值。我想找到这些元素的子集,仅包含那些未被另一个元素的两个元素超出的对...
所以,如果我理解正确的话,当我们想要更好的性能时,我们可以选择二进制格式(protobuf、thrift 或 avro),因为数据以更紧凑的方式表示,而且我们没有额外的
有没有办法使用 scipy.minimize 在每次迭代的基础上访问成本函数,而不使用回调并重新执行成本函数? options.disp 似乎是为了做到这一点......
我是 Dart 编程语言的新手,我转向我常用的测试 FizzBuzz 来检查该语言。目前,我有这个相对 if-heavy 的例子,它非常慢。只是博士...
在 VB.NET 中创建一个 NotInheritable 类是否可以提供与 C# 中密封的相同(潜在)编译器优化?
我读到,在高性能场景中,建议用 C# 封装一个类,因为它可以让编译器自由地进行某些优化(例如,内联属性 getter),而这是不可能的
我有一个带有VBA代码的excel文件(不是我写的) 该代码的工作原理是用户在用户表单中输入一个 6 位数字,然后 VBA 检查另一张表,如果该 6 位数字存在...
是否有一个属性可以用来告诉编译器必须始终优化方法,即使未设置全局 /o+ 编译器开关? 我之所以问这个问题是因为我正在考虑这个想法......
我目前正在编写一个代码,需要计算 傅立叶级数超过一百万次。傅里叶级数是 使用下面相同的函数计算。 def 傅立叶(ai, bi, 角度,
我有一个递归函数,耗尽调用堆栈是我有时遇到的问题。我知道我可以使用流、promise 和 setTimeout,但我只想编写触发 tai 的代码...
如何优化在 python 中提取消息的正则表达式模式的性能?
我需要一个正则表达式模式来创建一个包含三个独立列的 Pandas DataFrame:日期、用户和消息。我相信正则表达式是这种情况的最佳选择,但如果有其他方法可以......
我们可以在<O(n²) Time Complexity? [closed]
我试图弄清楚是否有一种方法可以比 C++ 中通常的 O(n²) 嵌套循环方法更快地获取输入和访问 2D 矩阵。 因为我要将 2D 数组元素存储在 1D 数组中。正如 ind...
我试图弄清楚是否有一种方法可以比 C++ 中通常的 O(n²) 嵌套循环方法更快地输入 2D 矩阵。我研究了扁平化数组和替代数据结构,但它们...
每月数据到每日 - Python 中的三次样条插值并进行优化
在这里处理一些每月数据,例如 - 月 价值 2024年1月10日 100 2024年1月11日 150 2024年1月12日 400 现在请记住,这些值是相关月份的每日平均值...
我有一个包含 13170180 行的巨大数据框,并且我有一个包含 1107650 个点的网格。我想根据距每个网格点中心 2000 米的半径来过滤数据点。 图书馆(地圈) 图书馆...