C/C++ For循环语句的效率测试优化及运行时错误:Stack Overflow的解决办法

简介: C/C++ For循环语句的效率测试优化及运行时错误:Stack Overflow的解决办法 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的 循环放在最外层,以减少CPU跨切循环层的次数。

C/C++ For循环语句的效率测试优化及运行时错误:Stack Overflow的解决办法


在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的
循环放在最外层,以减少CPU跨切循环层的次数。


使用以下代码对嵌套For循环的效率进行测试验证:

// For嵌套性能.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>   
#include <time.h>   
using namespace std;  

int main(void)  
{  
	clock_t cstart,cends;  
	
	cstart=clock();
	
	long sum1 =0;
	long a1[5][10000000];
	
	for(long i = 0; i < 5; i++)                
	{
		for(long j = 0; j < 10000000; j++)
		{
			sum1 += a1[i][j];
		}
	}
	
	cout << "sum1=:" << sum1 << endl;
	
	cends=clock();  
	
	cout << "Clock时间差:" << cends-cstart << endl;  

	/////////////////////////////////////////////////////////////////
	cstart=clock();
	
	long sum =0;
	long a[10000000][5];

	for(i = 0; i < 10000000; i++)                
	{
		for(long j = 0; j < 5; j++)
		{
			sum += a[i][j];
		}
	}
	
	cout << "sum=:" << sum << endl;
	
	cends=clock();  
	
	cout << "Clock时间差:" << cends-cstart << endl;  
	
	//////////////////////////////////////////////////////////////

	
	system("pause");  

	return 0;  
}  

运行结果:



以上代码在Windows Server 2008 x64 系统上编译通过,

IDE为:Microsoft Visual c++ sp6

可以编译通过,但是运行会出现错误:



运行时错误:Stack Overflow的解决办法:




目录
相关文章
|
27天前
|
监控 测试技术 UED
软件测试中的性能瓶颈定位与优化策略
在软件开发的生命周期中,性能测试是确保产品质量的关键步骤之一。本文深入探讨了性能测试的重要性,并提出了一套系统的性能瓶颈定位与优化策略。通过分析现代软件系统中常见的性能问题,结合最新的研究成果和行业最佳实践,文章详细介绍了如何运用科学严谨的方法来识别和解决性能瓶颈。此外,本文还强调了逻辑严密的问题分析框架和数据驱动的决策过程对于提升软件性能的重要性。
|
14天前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
14天前
|
设计模式 安全 数据管理
【c++】stack和queue模拟实现
【c++】stack和queue模拟实现
13 1
|
14天前
|
设计模式 算法 Java
【c++】STL之stack和queue详解
【c++】STL之stack和queue详解
14 1
|
1月前
|
设计模式 存储 C++
【C++/STL】:stack/queue的使用及底层剖析&&双端队列&&容器适配器
【C++/STL】:stack/queue的使用及底层剖析&&双端队列&&容器适配器
33 2
|
29天前
|
C++ 容器
C++之stack容器
C++之stack容器
19 1
|
1月前
|
编译器 C++ 开发者
C++一分钟之-返回值优化与Move Semantics
【6月更文挑战第19天】C++的RVO与移动语义提升效率,减少对象复制。RVO是编译器优化,避免临时对象的创建。移动语义通过右值引用和`std::move`转移资源所有权。注意RVO不是总有效,不应过度依赖。使用移动语义时,避免误用`std::move`导致对象无效。示例展示了RVO和移动构造函数的应用。理解并恰当使用这些机制能写出更高效代码。
31 3
|
1月前
|
测试技术 持续交付 API
Airtest脚本的重构与优化:提升测试效率和可读性
通过对Airtest脚本的重构与优化,我们不仅能提升测试效率,还能增强脚本的可读性和可维护性。这些改进将有助于应对不断变化的测试需求,为保证软件质量提供坚实的支持。记住,优化是一个持续的过程,定期回顾和调整测试脚本是保持测试项目健康的关键。希望以上分享能帮助大家在自动化测试的道路上更进一步。
|
1月前
|
C语言 C++ 容器
【C++初阶学习】第十二弹——stack和queue的介绍和使用
【C++初阶学习】第十二弹——stack和queue的介绍和使用
29 8
|
1月前
|
jenkins 测试技术 持续交付
利用C++增强框架的可测试性(Testability)
**C++框架可测试性提升策略**:通过模块化设计、依赖注入、使用Mock对象和Stub、编写清晰接口及文档、断言与异常处理、分离测试代码与生产代码、自动化测试,可以有效增强C++框架的可测试性。这些方法有助于确保代码正确性、健壮性,提高可维护性和可扩展性。示例包括使用类和接口实现模块化,通过构造函数进行依赖注入,以及利用Google Test和Google Mock进行断言和模拟测试。
34 1