编译后的第一次执行非常慢,除非“明显”所有循环都会停止

2024-04-17

我这个标题的意思是,在某些情况下,构建整个程序后,它的第一次执行将需要大约 25 秒才能开始(直到第一个 printf 在控制台上显示)。接下来的执行几乎立即开始(正如它们应该的那样)。添加/删除一个空格并再次编译,之后的第一次执行再次变得极其缓慢。

我从 IDE (Code::Blocks) 或文件资源管理器中运行它的天气没有任何改变。

但这是“解决”问题的方法:

我写的程序有一个循环,它不断地等待用户输入:

#include <stdio.h>
#include <string>

using namespace std;

int main()
{
    printf("Welcome!\n");

    bool Running=true;

    do{

      char input[256], command[64];


      if(fgets(input, 256, stdin) == NULL || input[0]=='\n')
        continue;

      sscanf(input, "%s", command);

      string command_cppstr(command);

      if(command_cppstr == "help")
      {
        printf("\n");
        printf("help - displays this list\n");
        printf("exit / quit - exits this progam\n\n");
        continue;
      }
      if(command_cppstr == "exit" || command_cppstr == "quit")
      {
        Running = false;
        continue;
      }

      printf("Unrecognized command. Use command \"help\" for a list of commands and their descriptions.\n");

    }while(Running);

    return 0;
}

该程序存在前面提到的问题。但是,如果我做了许多保证程序停止的事情中的任何一个,问题就不会再出现。例如,声明如下:

int i=0;

并在 do while 循环中插入以下内容:

i++;
if(i>4)
  Running=false;

不仅使程序在处理完 4 个命令后停止,它还“解决”了问题 - .exe 不再需要很长时间才能第一次执行。我将“解决”放在引号之间,因为我只希望当用户通过键入命令“退出”或“退出”这么说时停止我的程序。

我再次指出,我首先编译,等到所有内容都编译完毕,然后才运行可执行文件。

我想知道如何避免这种情况,因为即使我找到了部分解决方案,但它对我来说并不完全理想。我也想知道是什么原因导致这个问题。就好像计算机不愿意运行可能永远不会停止的代码,担心陷入无限循环 xD。

感谢您对这篇文章的关注,并提前感谢任何试图回答这些问题的人。


Edit:

好的,这是我在阅读答案后到目前为止所尝试的:

  • 禁用卡巴斯基(我的防病毒软件)-问题就消失了。但这不是一个好的解决方案,因为我不喜欢没有防病毒软件的想法。

我重新激活卡巴斯基:

  • 取消选中“使用启发式分析确定未知应用程序的[限制]组 - 无效”
  • 禁用卡巴斯基的“应用程序控制” - 没有效果
  • 禁用卡巴斯基的“系统监控” - 没有效果
  • 禁用卡巴斯基“Antivirus de MI”(似乎与聊天室相关的东西)-没有效果
  • 禁用“漏洞验证设置”中的“验证范围” - 无效
  • 在卡巴斯基应用程序控制中赋予程序可信状态 - 无效
  • 将程序放入卡巴斯基的卡巴斯基排除列表中 - 没有效果
  • 将 code::blocks 放在卡巴斯基的卡巴斯基排除列表中 - 没有效果

卡巴斯基中有很多可以禁用的功能,但我认为我尝试过的最有可能影响这种情况。但这肯定是卡巴斯基的错,因为禁用它解决了问题。我想我会尝试禁用更多的东西......

我还尝试了以下方法:

  • 将 i++ 与我声明的函数交换(我通过引用和增量传递) - 无需等待
  • 将 i++ 与我声明的函数交换(函数返回参数+1) - 无需等待
  • i 从 1 开始,每次循环时乘以 2。当大于8时,Running=false——不等待
  • i 从 0 开始,每次循环时乘以 2。当它大于 8 时,Running=false - 等待(因为这不能保证会停止 xD)

我将继续尝试改变我增加的方式,以尝试进一步摆脱任何似乎正在检查我的程序是否停止的事情 xD...我将在进行实验时使用结果进行编辑。


我继续尝试在卡巴斯基中寻找可以解决这个问题的方法

显然,禁用防火墙和“应用程序控制”功能可以解决问题。但我想,让计算机在没有防火墙的情况下运行并不是一件好事。

所以我重新启用了这两个功能,在“应用程序控制”中有一个“未知应用程序”的选项,介于

  • 使用启发式分析来确定群体(即“可信度”)’
  • 自动将应用程序放入以下组:[您可以在 3 个可信度组之间进行选择的框]

然后有一个框写着:

确定组的最长时间:<_> 秒。

现在这是有趣的部分:此框中的秒数与程序开始运行之前所需的时间直接相关。 (这个时间永远不会大于秒数 + ~2)

但谜团还没有结束:

最后一行变灰,当我停用启发式分析时,测试框被禁用,这表明当禁用启发式分析时,将无需等待。但是还有!而且它仍然与插入到现在不可编辑的文本框中的时间有关!

哦,为什么防火墙的状态很重要?据说,只要停用“应用程序控制”就可以解决此问题,但不行,防火墙和应用程序控制都必须禁用!


乍一看,这看起来像防病毒软件。每次它看到一个新的可执行文件正在运行时,它都会检查该文件是否有病毒。每当您重新编译时,它都必须再次检查文件,因为它已更改。

但你对问题的“解决方案”让我感到困惑!你所描述的似乎是不可能的。程序(或操作系统、防病毒软件)如何知道循环次数是有限的?我认为这里需要进一步的实验。

首先,您可以尝试将可执行文件添加到防病毒软件的排除列表中。会发生什么?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译后的第一次执行非常慢,除非“明显”所有循环都会停止 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 为什么这个函数在额外读取内存时运行速度如此之快?

    我目前正在尝试了解 x86 64 上某些循环的性能属性 特别是我的 Intel R Core TM i3 8145U CPU 2 10GHz 处理器 具体来说 在循环体内添加一条额外的指令来读取内存几乎可以使性能提高一倍 而细节并不是特别重
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • Xcode 7 在创建新文件时崩溃

    我有 El Capitan GM 并且我已将 Xcode 更新为 Xcode 7 GM 现在我无法创建新类 Xcode 崩溃并显示消息 UNCAUGHT EXCEPTION NSInvalidArgumentException NSOpen
  • 在nifi中将JSON转换为CSV

    我想在 nifi 中将 JSON 文件转换为 CSV 我们可以用 Python 和其他编程语言来实现这一点 并且有多篇文章介绍它 我有多个 JSON 文件 每个文件都有不同的架构 一个特定文件只有一个架构 我可以看到有一些模板可以将 CSV
  • 项目“ ”的目标位置已存在,无法移动项目

    当我尝试与 git 存储库共享我的项目时 出现这样的异常 项目的目标位置 已存在 无法移动项目 写一个答案是因为我尝试了许多类似问题中建议的许多选项 但没有一个起作用 然后我按照以下有效步骤手动完成了此操作 并且这些步骤适用于任何 Ecli
  • 使用正则表达式查找有效的 IP 地址

    我有以下字符串 text 10 0 0 1 1 but 127 0 0 256 1 1 1 1 我想返回有效的IP地址 所以它应该只返回1 1 1 1自从这里256高于255并且第一个IP编号过多 到目前为止 我有以下内容 但它不适用于0
  • 抽象与抽象类

    根据http www cs cornell edu courses cs211 2006sp Lectures L08 abstraction 08 abstraction html http www cs cornell edu cour
  • 为什么 TableAttribute 位于实体框架 Dll 中?

    Table 属性 可用于将 POCO 类映射到正确的数据库名称 架构 位于 EntityFramework dll 中是否有充分的理由 这是否会阻止您创建一个仅包含您的实体而不依赖于特定数据访问技术的域项目 例如 如果我使用此属性 我不相信
  • CLGeocoder 返回其他国家/地区的位置

    我有以下代码 CLGeocoder geo CLGeocoder alloc init CLRegion region CLRegion alloc initCircularRegionWithCenter CLLocationCoordi
  • 在Sandbox中使用Cocoa NSSavePanel导致断言失败

    我正在尝试使用 NSSavePanel 并将这一行添加到我的代码中 let test NSSavePanel 每次调用此代码时都会出现此错误 我不太确定这里发生了什么 因为我只是创建一个新对象 任何帮助表示赞赏 谢谢 Assertion f
  • 如何在 MVC Core 和 AutoFac 中使用属性注入

    我可以在 MVC Core 中轻松使用构造函数参数注入 但不支持属性注入 我尝试使用 AutoFac 但也失败了 那么如何在MVC Core中使用属性注入 这是 AutoFac 的代码 services AddMvc ContainerBu
  • 使用 Linkify Android 打开 Activity

    我想在用户使用 linkify 单击 textView 时打开 Activity 这是我的代码 Pattern tagMatcher Pattern Compile A Za z0 9 Scheme for Linkify when a w
  • C++ 中的 malloc/free 和 new/delete 兼容性?

    malloc free 和 new delete 有一个很好的比较here https stackoverflow com questions 240212 what is the difference between new delete
  • 致命错误:netinet/in.h:没有这样的文件或目录

    套接字编程 UDP 服务器 我正在尝试使用 UDP 服务器进行消息加密和解密 代码在这里 https www geeksforgeeks org message encryption decryption using udp server
  • 创建一个 python 脚本来安装 python 模块并运行一些命令

    我想围绕这个库创建一个薄包装https github com jupyter incubator sparkmagic installation https github com jupyter incubator sparkmagic i
  • Django - ImportError:无法导入名称 Celery

    这是我第一次使用 celery 我完成了这个教程 将 celery 与 Django 一起使用 http docs celeryproject org en latest django first steps with django htm
  • 如何解码哈希

    如果攻击者可以访问用户的数据库并且密码存储在哈希值中 攻击者可以解码该哈希值吗 您能推荐任何可以解码哈希值的工具吗 您可以在这里找到更多详细信息 http crackstation net hashing security htm http
  • C#/WPF:如何单独显示 ListView 的最后一行?

    我有一个 ListView 其中包含大约 10 个 GridViewColumn 和大约 100 行 行 我想在 ListView 的底部显示 总计 或摘要行 有谁知道如何做到这一点 保持 ColumnWidth 等像其他一样并将其作为一个
  • 在 UITextview 中加载巨大的文本文件会崩溃

    我想更新 UITextView 中的一个巨大的文本文件 但设备有时会挂起或崩溃 文本文件大小为 4MB UITextView 是从 Interface Builder 添加的 我正在从文档目录加载文件 以下是加载文本文件的代码 NSErro
  • 如何从函数返回值 - React Native

    如何从反应本机函数返回布尔值 它可以这样完成 export function isJson str try JSON parse str catch e return false return true 该函数检查提供的值是否有效JSON
  • 检查标准输入缓冲区是否为空

    我正在尝试用字符读取数字字符 但我不知道标准输入缓冲区是否为空 我的第一个解决方案是寻找 n标准输入缓冲区中的字符 但是如果我要输入由分隔符分隔的多个数字 这就没用了 我如何知道标准输入缓冲区中是否有字符 我需要用 C 语言来完成它并且是可
  • 编译后的第一次执行非常慢,除非“明显”所有循环都会停止

    我这个标题的意思是 在某些情况下 构建整个程序后 它的第一次执行将需要大约 25 秒才能开始 直到第一个 printf 在控制台上显示 接下来的执行几乎立即开始 正如它们应该的那样 添加 删除一个空格并再次编译 之后的第一次执行再次变得极其