iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++用函数对算法性能进行测试
  • 295
分享到

C++用函数对算法性能进行测试

C++性能测试C++算法性能测试 2022-11-13 14:11:14 295人浏览 安东尼
摘要

目录前言工具模板说明测试前言 “AlGorithm+Data Structures=Programs”——瑞士计算机科学家尼古拉斯&m

前言

“AlGorithm+Data Structures=Programs”——瑞士计算机科学家尼古拉斯·沃斯

工具

C/C++库函数中的time.h/ctime库中的clock()函数

模板

#include<iOStream>

#include<ctime>

using namespace std;

clock_t start_time = clock();

{ 算 法 代 码 块 };

clock_t end_time = clock();

cout<<(double)(end_time - start_time) / CLOCKS_PER_SEC<<"秒";

说明

clock()函数返回类型为clock_t(实际上是long类型),它返回从开启某个程序进程到再次调用clock()函数之间的CPU时钟计时单元(时钟周期)。

CLOCKS_PER_SEC是标准库中所定义的宏,表示每1秒CPU时钟计时单元(时钟周期)的个数

end_time - start_time 表示该程序执行期间CPU时钟计时单元(时钟周期)的总个数,除以每秒钟CPU时钟计时单元(时钟周期),即可得到程序实际运行时间,返回的单位是毫秒。

测试

分别测试选择排序算法c++中的sort()函数的算法性能,测试数据由随机数生成。

#include<iostream>
#include<algorithm> 
#include<ctime>
using namespace std;
//选择排序 
void SelectSort(int a[],int n){
	for(int i=0;i<n;i++){
		int min_index=i;
		for(int j=i+1;j<n;j++)
			if(a[j]<a[min_index])
			  min_index=j;
		swap(a[i],a[min_index]);	
	}
}
//随机数组 
int* RandomArray(int n,int rangeL,int rangeR){
	int *arr=new int[n];//创建一个大小为n的数组 
	srand(time(NULL));//以时间为"种子"产生随机数 
	for(int i=0;i<n;i++){
		arr[i]=rand()%(rangeR-rangeL+1)+rangeL;//生成指定区间[rangeL,rangeR]里的数 
	}
	return arr;
}
int main(){
	int n;
	cout<<"请输入数据规模n: ";cin>>n;
	int *arr1,*arr2;
	arr1=RandomArray(n,0,10000);
	arr2=arr1; 
	clock_t start_time1=clock();
	SelectSort(arr1,n);//选择排序算法 
	clock_t end_time1=clock();
	cout<<"选择排序耗时:"<<(double)(end_time1-start_time1)/CLOCKS_PER_SEC<<"秒"<<endl;
	clock_t start_time2=clock();
	sort(arr2,arr2+n);//C++中sort()排序函数,底层为优化的快速排序算法 
	clock_t end_time2=clock();
	cout<<"优化快排耗时:"<<(double)(end_time2-start_time2)/CLOCKS_PER_SEC<<"秒"<<endl; 
	return 0;
} 

测试结果

测试结果分析

通过对比可知,在数据规模相同的情况下,C++sort()排序算法的性能远远远远优于选择排序。

我们能从数据上直观的看到数据规模的增长所带来的运行时间的加长,数据规模由10000变为100000,扩大了10倍,那么根据时间复杂度的分析,选择排序的算法时间会扩大100倍左右,而sort()排序函数则会扩大10倍左右,由测试结果看出,确实如此。

因为选择排序算法的时间复杂度为O(n^2),而C++sort()排序函数的底层实现原理是快速排序算法,而且是优化的快速排序,系统会根据数据形式和数据量自动选择合适的排序方法。它每次排序中不只选择一种方法,比如给一个数据量较大的数组排序,开始采用快速排序,分段递归,分段之后每一段的数据量达到一个较小值后它就不继续往下递归,而是选择插入排序,如果递归的太深,他则会选择堆排序,时间复杂度为O(nlogn)。可见C++中sort()排序算法性能之强悍!(呐喊)

到此这篇关于C++用函数对算法性能进行测试的文章就介绍到这了,更多相关C++性能测试内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++用函数对算法性能进行测试

本文链接: https://www.lsjlt.com/news/171588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++用函数对算法性能进行测试
    目录前言工具模板说明测试前言 “Algorithm+Data Structures=Programs”——瑞士计算机科学家尼古拉斯&m...
    99+
    2022-11-13
    C++性能测试 C++算法性能测试
  • 如何对 C++ 函数性能进行基准测试?
    为 c++++ 函数进行基准测试,可采取以下步骤:使用计时工具(如 std::chrono 库)测量执行时间。编写基准测试函数以执行代码并返回执行时间。利用基准测试库获取高级功能,如统计...
    99+
    2024-04-19
    性能基准测试 git c++
  • C语言qsort函数算法性能测试
    qsort 是 C 语言标准库中的一个排序函数,其性能(即它的运行速度)主要取决于比较和交换元素的次数。比较和交换元素的次数又主要取决于输入数组的大小和分布。以下是一个简单的 qsort 性能测试的例子,你可以复制这个代码,然后运行它以查看...
    99+
    2023-12-09
    C语言 qsort函数
  • 如何进行C++代码的性能测试?
    如何进行C++代码的性能测试概述:在软件开发过程中,性能测试是一项非常重要的任务。对于C++代码来说,性能测试可以帮助开发人员了解代码的执行效率,找到性能瓶颈,并对其进行优化。本文将介绍一些常用的C++代码性能测试方法和工具,帮助开发人员提...
    99+
    2023-11-02
    测试 性能测试 C++代码
  • python性能测试对手机号绑定进行压测
    目录引言业务逻辑:基本的校验规则如下:解决方案:测试方案:压测脚本:模块类方法:引言 最近遭遇了绑定手机号相关的压测需求,有了手机号登录的经验和测试数据,这次算起来比较简单。最重要的...
    99+
    2024-04-02
  • 如何使用单元测试框架对 Golang 函数进行测试?
    go 中使用单元测试框架进行单元测试:导入 testing 包。编写以 test 为前缀的单元测试函数。使用断言函数(如 assertequal())验证测试结果。运行单元测试(go t...
    99+
    2024-04-16
    golang 单元测试 标准库
  • 如何使用tpcc-mysql对mysql进行TPCC性能测试
    这篇文章主要介绍如何使用tpcc-mysql对mysql进行TPCC性能测试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! tpcc-mysq是满足TPC...
    99+
    2024-04-02
  • C++ 函数库如何进行单元测试?
    在 c++++ 函数库中使用 google test 进行单元测试可确保其可靠性,具体步骤如下:安装 google test为函数库创建单元测试:创建“.test.cpp”文件并包含 g...
    99+
    2024-04-19
    c++ 单元测试 git
  • 如何使用Gateling进行性能测试
    这篇文章主要讲解了“如何使用Gateling进行性能测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Gateling进行性能测试”吧!Gatling是什么?Gatling 是一个用...
    99+
    2023-06-02
  • 如何用C语言对Gtk及应用进行功能测试
    本篇文章给大家分享的是有关如何用C语言对Gtk及应用进行功能测试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如何测试你应用的功能。自动化测试用来保证你程序的质量以及让它以预想...
    99+
    2023-06-17
  • go通过benchmark对代码进行性能测试详解
    目录benchmark的使用运行Benchmark指定测试时长或测试次数重置时间和暂停计时查看内存使用情况testing.B的底层实现总结benchmark的使用 在开发中我们要想编...
    99+
    2023-05-17
    go-benchmark代码性能测试 go benchmark
  • 如何使用Go语言对大型应用进行性能测试
    如何使用 go 语言对大型应用进行性能测试?安装 beego 和 bombardier 工具。创建一个使用 beego 框架的 web 应用。创建一个使用 bombardier 生成的负...
    99+
    2024-05-08
    go语言 性能测试 mysql git
  • Golang 函数测试中的性能基准测试
    go 中的性能基准测试衡量函数效率,通过在以 benchmark 开头的函数中编写基准测试代码实现。testing.b 类型提供 resettimer()、stoptimer() 和 n...
    99+
    2024-04-12
    golang 性能基准测试
  • 使用 BenchmarkDotNet 对 C# 代码进行基准测试
    目录安装 BenchmarkDotNet 什么是基准测试 创建基准测试代码 运行 benchmark BenchmarkDotNet 是一个轻量级,开源的,强大的 .NET 工具包,...
    99+
    2024-04-02
  • 如何进行CentOS 6与CentOS 7的性能测试对比
    这篇文章主要为大家分析了如何进行CentOS 6与CentOS 7的性能测试对比的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何进行CentOS 6与Ce...
    99+
    2023-06-28
  • Go单元测试对数据库CRUD进行Mock测试
    目录前言go-sqlmock安装使用示例miniredis安装使用示例总结前言 最近在实践中也总结了一些如何用表格驱动的方式使用 gock Mock测试外部接口调用。以及怎么对GOR...
    99+
    2024-04-02
  • 如何进行H5前端性能测试
    如何进行H5前端性能测试,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。说到H5测试,对于做WEB测试的同学来说再熟悉不过了,它包括页H5功能测试,前端性能测试,...
    99+
    2023-06-05
  • Centos8下怎么使用Sysbench进行性能测试
    本篇内容介绍了“Centos8下怎么使用Sysbench进行性能测试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SysBench 是一个基...
    99+
    2023-06-27
  • golang 对私有函数进行单元测试的实例
    在待测试的私有函数所在的包内,新建一个xx_test.go文件 书写方式如下: import ( "github.com/stretchr/testify/assert" "...
    99+
    2024-04-02
  • 怎么对Java8中的函数式接口进行测试
    怎么对Java8中的函数式接口进行测试?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 函数式接口的理解根据重构的思想,需要把容易变化的模块进行抽象并封装起来,从这个点来...
    99+
    2023-05-31
    java8 函数式接口 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作