【问题标题】:Reducing Run Time C or C++ [closed]减少运行时间 C 或 C++ [关闭]
【发布时间】:2015-07-16 15:54:54
【问题描述】:

你们能不能请给我一些关于如何减少我的 c 或 c++ 程序的编译时间的提示... 一些基本的简单技术会有所帮助。 我正在通过一个网站解决一个问题(https://www.codechef.com/problems/TRISQ) 问题是:-

底边为 B 的直角等腰三角形最多可以容纳多少个 2x2 的正方形。正方形的一边必须平行于等腰三角形的底边。底边是等腰三角形的最短边三角形。 第一行包含 T,测试用例的数量。

以下 T 行中的每一行都包含 1 个整数 B。 准确输出 T 行,每行包含所需的答案。
示例输入

11
1
2
3
4
5
6
7
8
9
10
11


样本输出

0
0
0
1
1
3
3
6
6
10
10

我的代码

#include<iostream>
using namespace std;
int main()
{
    int T,N,a,i,j;
    cin>>T;
    while(T--)
        {
            a=0;
            cin>>N;
            N=N/2;
            N--;
            j=N;
            for(i=0;i<j;i++)
                {
                    a+=N;
                    N--;
                }
            cout<<a<<endl;
        }
}

那么你们如何看待这段代码(例如)可以被编辑以获得更好的编译时间?

【问题讨论】:

  • 我怀疑这花了很多时间来编译,我认为你担心runtime
  • 减少适合
  • 你肯定有 compile timeruntime 倒退。编译时间将是您单击编译并准备运行所需的时间。运行时间是您的程序执行和完成所需的时间。一个按速度对程序进行排名的网站是按运行时间(完成代码需要多长时间)
  • @DrZoo 也许他混淆了编译和计算这两个词?
  • @Tejasbedi 例如,您可能想edit 这个问题,所以标题不会完全错误和误导。

标签: c++ compilation


【解决方案1】:

第一个配置文件。

其次,调高编译器的优化级别。

第三,用乘法/代数替换你的 for 循环。例如,行
a+=N 是乘法(重复加法)的基础,循环可以替换为:
a += j * N; N -= j;

替换循环将加速您的程序(如果您的编译器尚未替换循环)。

打印函数的汇编语言将显示编译器如何应用优化。

编辑 1: 更少的代码也意味着更快的构建时间。我不知道建筑的时差是否可以测量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多