// 计时
#pragma once #include <iostream>
#include <thread>
#include <chrono>
#include <ctime> // clock namespace DS
{
// 当n超过一定次数时,栈溢出,比如10万次时:0x005753E9 处有未经处理的异常(在 DS.exe 中): 0xC00000FD: Stack overflow
// 实际项目中慎用递归,实际项目中一般会设置最大递归次数,若到达最大递归次数哪怕没求得结果也要返回,防止程序栈破裂,程序终止
void PrintN_Recursive(int n)
{
// 递归终止条件
if (n <= 1) {
return;
} //std::cout << n << ' ';// 放在这就会逆序打印
PrintN_Recursive(--n);
std::cout << n << std::endl;
} void PrintN_Loop(int n)
{
for (int i = 1; i <= n; ++i) {
std::cout << i << std::endl;
}
} void PrintN_Test()
{
clock_t start_time = 0, end_time = 0;
int n = 0;
std::cout << "Input N:";
std::cin >> n; std::cout << "By loop:" << std::endl;
start_time = clock();// C语言方式计时
DS::PrintN_Loop(n);
end_time = clock();
std::cout << "duration:" << end_time - start_time << "ms" << std::endl;
//std::cout << "duration:" << (end_time - start_time) / CLOCKS_PER_SEC << "s" << std::endl; // CLK_TCK或CLOCKS_PER_SEC是每秒走过的时钟打点数 std::this_thread::sleep_for(std::chrono::milliseconds(3000)); std::cout << "By Recursive:" << std::endl;
auto start = std::chrono::steady_clock::now(); // C++11
DS::PrintN_Recursive(n);// 当n超过一定次数时,栈溢出,比如1万次时:0x005753E9 处有未经处理的异常(在 DS.exe 中): 0xC00000FD: Stack overflow
auto end = std::chrono::steady_clock::now();
auto dura = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();// 微妙
std::cout << "duration:" << dura * 0.001 << "ms" << std::endl;
} }

最新文章

  1. Gatekeeper Pattern 把关(守门人)模式
  2. sh2.sed脚本练习
  3. 【Codeforces717G】Underfail Hash + 最大费用最大流
  4. 反射的一些用法(WP8.1下)
  5. 形形色色的下拉菜单 (css3)
  6. git的那点事---
  7. Lucene基础(三)-- 中文分词及高亮显示
  8. div中的内容居中
  9. mysql中DES加密解密
  10. Stones(优先队列)
  11. OpenCV HaarTraining代码解析(二)cvCreateMTStumpClassifier(建立决策树)
  12. Jenkins实现简单的CI功能
  13. debug 2
  14. 浏览器虚拟过程IP插件
  15. JAVA执行远端服务器的脚本
  16. BZOJ4167 : 永远的竹笋采摘
  17. isPrototypeOf 与 instanceof区别
  18. 实验楼高级bash脚本编程指南 挑战:简单的热身
  19. mongodb集群故障转移实践
  20. python初步学习-import和datetime模块

热门文章

  1. Centos7提示Initial setup of CentOS Linux 7 (core)
  2. php中的错误异常处理
  3. &quot;人生重开模拟器&quot;,10分钟轻松搭建!
  4. 在端点0由GET_REPORT类请求上传报表
  5. 使用Libusb测试USB device
  6. HIVE- 删除功能
  7. 5G工业智能网关助力智能制造开辟新赛道
  8. 如何理解Vue中的组件?
  9. requests库获取指定关键词的图片,并保存到本地
  10. 12组-Beta冲刺-4/5