C++时间日期相关
2024-09-08 18:44:49
// 计时
#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;
} }
最新文章
- Gatekeeper Pattern 把关(守门人)模式
- sh2.sed脚本练习
- 【Codeforces717G】Underfail Hash + 最大费用最大流
- 反射的一些用法(WP8.1下)
- 形形色色的下拉菜单 (css3)
- git的那点事---
- Lucene基础(三)-- 中文分词及高亮显示
- div中的内容居中
- mysql中DES加密解密
- Stones(优先队列)
- OpenCV HaarTraining代码解析(二)cvCreateMTStumpClassifier(建立决策树)
- Jenkins实现简单的CI功能
- debug 2
- 浏览器虚拟过程IP插件
- JAVA执行远端服务器的脚本
- BZOJ4167 : 永远的竹笋采摘
- isPrototypeOf 与 instanceof区别
- 实验楼高级bash脚本编程指南 挑战:简单的热身
- mongodb集群故障转移实践
- python初步学习-import和datetime模块