OrangePi Kunpeng Pro深度评测:性能与体验的完美融合

2024-06-09 15:36

本文主要是介绍OrangePi Kunpeng Pro深度评测:性能与体验的完美融合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、引言
  • 二、硬件开箱与介绍
      • 1.硬件清单
      • 2.硬件介绍
  • 三、软件介绍
  • 四、性能测试
      • 1. 功率测试
      • 2. cpu测试
        • 2.1 单线程cpu测试
        • 2.2 多线程cpu测试
  • 五、实际开发体验
      • 1. 搭建API服务器
      • 2. ONNX推理测试
      • 3. 在线推理平台
  • 五、测评总结
      • 1. 能与硬件配置
      • 2. 系统与软件
      • 3. 实际开发体验
      • 个人总结

一、引言

近期,香橙派(Orange Pi) 联合华为再次发布力作—OrangePi Kunpeng Pro。这是两家公司合作发布OrangePi AI pro之后的又一力作。OrangePi Kunpeng Pro是一块基于鲲鹏面向开发者的开发板,具有鲲鹏主板的完整能力,内置 openEuler 开源操作系统、openGauss 开源数据库和鲲鹏开发套件 DevKit。这意味着香橙派将成为面向通用计算的鲲鹏和面向人工智能计算的昇腾两大计算产业的参与者。通过搭载华为的“鲲鹏+昇腾”双引擎,国产开发板将在通用计算和人工智能计算方面迈上新的高度。

此次非常荣幸能够测评OrangePi Kunpeng Pro,下面给出官方的配置介绍:

  1. OrangePi Kunpeng Pro采用4核64位处理器+AI处理器,集成图形处理器,支持8TOPS AI算力,拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4K高清输出。
  2. OrangePi Kunpeng Pro引用了相当丰富的接口,包括两个HDMI输出、GPIO接口、Type-C电源接口、支持SATA/NVMe SSD 2280的M.2插槽、TF插槽、千兆网口、两个USB3.0、一个USB Type-C 3.0、一个Micro USB(串口打印调试功能)、两个MIPI摄像头、一个MIPI屏等,预留电池接口等。
  3. OrangePi Kunpeng Pro支持openEuler操作系统,满足大多数AI算法原型验证、推理应用开发的需求,同时可以为各种应用场景提供更高效的算力,如云计算、大数据、分布式存储、高性能计算等。

二、硬件开箱与介绍

1.硬件清单

在这里插入图片描述

图2.1 硬件清单

附带清单:开发板1,电源65W头1,C口数据线1,32G内存卡1(附带openEuler系统)(这里值得提一下的是,香橙派官方提供的Type-c 快速充电器,支持65W快充,非常nice!!👍)
开发板正面

图2.2 开发板正面

首次看到OrangePi Kunpeng Pro开发板子,我的第一感觉就是做工极为扎实。深黑色的PCB板散发着一种高端而专业的气质。仔细观察之下,我发现OrangePi Kunpeng Pro设计既合理又规整,配备了一个大型散热器,能有效地为板子散热,确保CPU性能得以充分发挥。但是,我发现天线是一片金属箔,在使用时,我们确实需要特别留意,不要将这片金属箔置于PCB板下方,因为这可能会导致短路的风险。

2.硬件介绍

  • 处理器和存储方面:
    OrangePi Kunpeng Pro搭载了强大的4核64位处理器集成AI处理器,提供了高达8 TOPS的AI算力,能够应对复杂的计算任务。其内存采用LPDDR4X,容量可选8GB或16GB,速率高达3200 Mbps。存储方面,支持多种存储选项,包括32MB的SPI FLASH、可扩展的SATA/NVME SSD(M.2接口2280)以及32GB至256GB的eMMC 5.1 HS400,还配备了TF卡插槽,确保存储灵活性。
    开发板背面
图2.3 开发板背面

开发板详细介绍

图2.4 开发板详细介绍
  • 网络连接与串口通信方面:
    网络连接通信方面,设备支持Wi-Fi 5双频(2.4G和5G)蓝牙4.2/BLE,提供了千兆以太网接口,保证高速稳定的网络传输。显示接口丰富,包括2个支持4K@60帧的HDMI 2.0接口和1个MIPI DSI接口,满足高分辨率显示需求。摄像头接口兼容树莓派摄像头,提供2个2-lane MIPI CSI接口。USB接口齐全,包括2个USB 3.0 HOST接口、1个USB Type-C 3.0 HOST接口和1个用于串口打印的Micro USB接口。音频方面,配备3.5mm耳机孔,支持音频输入输出。设备还配有多种按键和扩展接口,包括关机键、RESET键、启动方式拨动键、烧录按键,以及40PIN功能扩展接口,支持GPIO、UART、I2C、SPI、I2S、PWM等多种外设连接。

开发板接口

图2.5 开发板接口

开发板硬件详细规格参数

图2.6 开发板硬件详细规格参数

经过上述的介绍,我们不难发现OrangePi Kunpeng Pro的配置相当高端,接口设计极为丰富。与树莓派系列相比,OrangePi Kunpeng Pro无需额外购买转换器,为用户实际开发提供了极大的便利。而最让我兴奋的是,OrangePi Kunpeng Pro竟然配备了M.2接口,这一接口不仅兼容SATA/NVME SSD协议,还支持eMMC存储方案,这无疑大大拓宽了其存储应用的可能性。

三、软件介绍

在介绍软件之前先开机进入系统,当插入电源后板子就自动开机(接电自动开机,在实际开发过程中这个是非常方便的👍), 此时会听到风扇正在高速运转,大概半分钟左右,风扇恢复正常转速,几乎没有噪声(除非耳朵贴近)。然后,使用HDMI线连接显器,可以发现已经进入系统的登录界面,如图3.1。原厂已经预先烧录了openEuler系统,这一点无疑让我赞赏。对于初学者来说,这种即插即用的体验十分友好,省去了许多自行安装系统的繁琐步骤,让学习变得更加轻松和高效。
系统登录界面

图3.1 系统登录界面

开机这里在我测试的过程中遇到了一个小麻烦,当我先连接HDMI视频线到显示器后再插电源开机,发现显示器并没有正常显示而是无信号连接,后来经过多次尝试,发现先接通电源线开机,等风扇转速稳定后再连接HDMI线就可以正常显示了。这个问题不知道是缺陷还是还是我的板子问题。
如图3.1所示,出厂已经烧录了openEuler系统,默认的账号和密码均为openEuler

输入密码进入系统发现和常见的Linux桌面差不多。

openEuler桌面

图3.2 openEuler桌面

简单的打开软件和浏览网页,非常的流畅丝滑,这无疑证明了软件与硬件之间的协同优化达到了极高水平。这种出色的表现,不仅彰显了系统的高效运行能力,也体现了制造商在软硬件结合方面的精湛技艺。简而言之,这款产品的流畅体验,正是软硬件优化完美结合的最好诠释。

打开终端,输入cat /etc/os-release查看系统版本信息。

查看系统版本信息

图3.3 查看系统版本信息

我拿到的是22.03(LTS-SP3)版本。

仔细观察发现系统的时间不正确,我们先连接网络,打开设置,找到Wi-Fi,选择WIFI进行连接。

连接Wi-Fi

图3.4 连接Wi-Fi

连接后打开设置,找到日期和时间,点击解锁

设置时间

图3.5 设置时间

设置这里需要输入admin密码依然是openEuler

获取权限后,选择自动设置日期和时间和正确的时区

设置自动日期和时间

图3.6 设置自动日期和时间

观察发现,系统还预装了vs code。👍

软件方面总结来说分为以下几点:

  • 系统预装了openEuleropenGaussDevKit。内置的openEuler操作系统和openGauss数据库提供了高效、稳定和安全的体验,支持多种硬件架构和虚拟化技术,适用于各种企业级边缘计算应用场景。内置的DevKit开发工具集成了编辑、编译、调试、测试和优化工具,满足端到端开发需求。
  • 这款设备还助力高校计算机系统能力的教学,支持设计计算机系统能力课程,适用于服务器课程创新、云计算课题创新、边缘计算课程创新以及嵌入式课程创新。一块OrangePi Kunpeng Pro即可满足从本科到研究生的系统化学习需求。
  • 设备提供类似PC的桌面环境,支持图形化桌面(如gnome)、浏览器(如firefox)、文本编辑器(如gedit)、中文输入法和shell终端,简化了上手难度。
  • 设备还支持鲲鹏全栈原生开发,适用于开发各种创新应用场景,包括教育教学、无人机、小车、智能家居、机械手臂和物联网等。

四、性能测试

在测试开始前,我首先尝试了一下远程SSH连接。由于我当前的环境并不具备直接连接局域网的条件,我便利用了笔记本电脑的网络共享功能。我将OrangePi Kunpeng Pro设备连接到笔记本所共享的网络上,这样简单地构建了一个临时局域网环境,为接下来的测试工作做好了准备。
笔记本端

图4.1 笔记本端

成功建立连接后,在笔记本上能发现OrangePi Kunpeng Pro的IP地址。随后,我使用xshell进行尝试远程连接。板子默认安装和开启了ssh,只需在xshell中输入正确的IP地址、账号以及密码,即可迅速与板子建立连接,这一流程简洁而高效。如图4.2所示,连接成功后,我们可以清晰地看到一些简单的连接信息和系统状态。这些信息不仅帮助我们确认连接已建立,还为我们提供了关于系统当前状态的直观了解。

在这里插入图片描述

图4.2 连接信息

1. 功率测试

我这里正好有一个充电器电压测试模块,关机------连接开发板进行测试。

OrangePi Kunpeng Pro开机功率测试

通过上方视频可以发现,在刚开始风扇处于高转速模式,实际功率在12w左右,风扇变为正常转速时实际功率在9w左右。

OrangePi Kunpeng Pro轻度负载功率测试

通过浏览器播放视频,功率在10w左右。

2. cpu测试

  • 系统更新
    更新yum包管理器,使用下方命令:
    sudo yum update -y
    结果:
    yum更新
图4.3 yum更新

安装测试工具

使用以下命令:

sudo yum install sysbench

安装结果:

安装测试工具

图4.4 安装测试工具
2.1 单线程cpu测试

使用 sysbench 进行单线程 CPU 测试的命令如下:

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=1 run

参数说明:

  • --test=cpu:指定测试类型为 CPU。
  • --cpu-max-prime=20000:设定一个较大的素数上限,增加计算量。
  • --num-threads=1:设置线程数量为 1,也就是单线程测试。

结果:

单线程cpu测试

图4.5 单线程cpu测试

sysbench 单线程 CPU 测试中,CPU 以每秒 814.75 个事件的速度处理任务,总共处理了 8152 个事件。平均每个事件的延迟为 1.23 毫秒,延迟非常稳定,最大延迟仅为 1.83 毫秒。测试运行了 10 秒,显示出 CPU 在单线程任务中的高效和稳定性能。

2.2 多线程cpu测试

使用 sysbench 进行多线程 CPU 测试的命令如下:

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run

参数说明:

  • --test=cpu:指定测试类型为 CPU。

  • --cpu-max-prime=20000:设定一个较大的素数上限,增加计算量。

  • --num-threads=4:设置线程数量为 4,表示进行多线程测试。

结果:

多线程cpu测试

图4.5 多线程cpu测试

sysbench 多线程 CPU 测试中,使用 4 个线程运行。结果显示 CPU 每秒处理 2424.78 个事件,总共处理了 24262 个事件。平均每个事件的延迟为 1.65 毫秒,最小延迟为 1.22 毫秒,最大延迟为 26.24 毫秒,95 百分位延迟为 1.32 毫秒。每个线程平均处理 6065.5 个事件,标准偏差为 1434.94,表明线程间的负载分布略有不均。测试总时间为 10 秒,显示了 CPU 在多线程任务下的性能和延迟情况。

五、实际开发体验

1. 搭建API服务器

这里我尝试搭建一个简单的API微型服务器,选择python的Django后端框架开发API接口,接下来上传代码进行简单的测试。

先在主目录下创建一个www文件夹用于存放网站文件。

创建目录

图5.1 创建目录

这里我通过FileZilla是同SFTP进行连接上传代码文件,上传完成后对代码进行解压。

输入python命令时,发现系统已经自带了Python 3.9的环境,这一点非常便利和值得称赞。这意味着我们无需额外安装Python,就可以直接开始编写和运行Python代码了。这种预安装的环境将极大地提高我们的开发效率,让我们能够更快地投入到实际的编程工作中。

python测试

图5.2 python测试

使用pip install -r requirements.txt安装环境。

环境安装

图5.3 环境安装

安装完成后,使用命令 python manage.py runserver 0.0.0.0:8080启动项目发现速度非常的快。

启动项目

图5.4 启动项目

启动成功后,系统默认没有启用防火墙,我们可以在局域网内直接进行访问。

项目启动结果

图5.5 项目启动结果

访问成功而且速度非常的快

2. ONNX推理测试

这里我使用了PaddleDetection 的 PublicPP-PicoDet超轻量实时目标检测模型,使用官方的demo官方的进行测试。
点击上方的链接,我们下载后上传到服务器并解压。

安装环境包
pip install opencv-python tqdm onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/simple/

结果:

项目启动结果

图5.6 项目启动结果

在刚才的的官方demo页面下载官方提供的ONNX( w/ 后处理)并上传到服务器。

我们进入到demo的文件目录,使用命令python main.py --modelpath picodet_xs_320_lcnet_postprocessed.onnx(注意替换模型路径)
运行结果

图5.6 运行结果

可以看到运行成功,速度非常的快。

3. 在线推理平台

我们结合前小节,简单的搭建一个在线检测平台。

  • 配置 URL 路由。在 image_processor/urls.py 中添加 process 的路由:
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('process/', include('process.urls')),
]
  • 创建 process/urls.py 文件并添加路由:
from django.urls import path
from . import viewsurlpatterns = [path('', views.process_image, name='process_image'),
]
  • 编写视图来处理图像上传和处理。在 process/views.py 中添加以下代码:

    from django.http import HttpResponse
    import cv2
    import numpy as np
    import iofrom apiai.det_api import PicoDetdef process_image(request):if request.method == 'POST':if 'image' not in request.FILES:return HttpResponse('No image uploaded', status=400)image_file = request.FILES['image']image = cv2.imdecode(np.fromstring(image_file.read(), np.uint8), cv2.IMREAD_COLOR)net = PicoDet("./apiai/picodet_xs_320_lcnet_postprocessed.onnx", "./apiai/coco_label.txt")srcimg = net.detect(image)# 将处理后的图像保存到字节流_, img_encoded = cv2.imencode('.jpg', srcimg)img_io = io.BytesIO(img_encoded)return HttpResponse(img_io.getvalue(), content_type='image/jpeg')return HttpResponse('Invalid request method', status=405)
  • 将前端的 index.html 文件放在Django项目的静态文件目录中,并确保 settings.py 中配置了静态文件目录:

    python复制代码STATICFILES_DIRS = [BASE_DIR / "static",
    ]
    
  • 运行Django开发服务器:

    python manage.py runserver 0.0.0.0:8080

    结果:

平台运行结果

图5.6 平台运行结果

笔者在笔记本打开浏览器访问 http://ip:8000/static/index.html 来打开页面。

平台显示结果

图5.6 平台显示结果

访问成功!

我们上传照片测试推理。

在这里插入图片描述

同过上方动图可以发现推理速度非常的快。

五、测评总结

1. 能与硬件配置

OrangePi Kunpeng Pro 在硬件配置上无疑是极其强大的。其搭载的4核64位处理器和集成AI处理器,能够提供高达8 TOPS的AI算力,内存最高可达16GB LPDDR4X,确保了在处理复杂任务时的高效性能。同时,多样化的存储选项(包括支持SATA/NVME SSD的M.2插槽、eMMC模块和TF卡插槽)提供了极大的存储灵活性。丰富的接口设计(如双4K HDMI输出、USB 3.0、USB Type-C等)满足了各种外设连接需求,适用于多种应用场景。

2. 系统与软件

预装的openEuler系统及其流畅的运行表现,展现了硬件与软件的高度协同优化。系统的默认安装和设置友好,特别适合初学者入门。同时,设备支持openGauss数据库和鲲鹏开发套件DevKit,为开发者提供了丰富的工具和资源。这些预装的软件不仅提升了设备的易用性,也使其在教育、研究和开发等多个领域具有广泛的应用前景。

3. 实际开发体验

在实际开发测试中,OrangePi Kunpeng Pro展现出了卓越的性能表现。通过搭建API服务器和进行ONNX模型的推理测试,设备表现出极高的处理速度和稳定性。在搭建在线推理平台时,其出色的处理能力和响应速度进一步证明了其在AI计算和实时任务中的应用潜力。

优势:

  1. 高性能处理器和AI算力:适用于复杂的计算任务和AI推理。
  2. 丰富的接口和扩展性:支持多种外设连接,满足各种开发需求。
  3. 预装系统和开发工具:简化了初学者的上手难度,提供了丰富的开发资源。
  4. 高效的软硬件协同:流畅的系统运行体验,极大提升了开发效率。

优化建议:

  1. 视频输出问题:在测试过程中发现HDMI连接需要在设备启动后进行,否则可能出现无信号的情况。
  2. 初期设置:虽然系统预装了openEuler,但某些初始设置(如时间设置)仍需手动调整。
  3. 电源接口:这个板子有两个Type-c接口,第一次拿到不查询手册,很难确定哪个是电源接口,建议在电源接口做一下区分(比如:印刷一个闪电的标注)。

个人总结

OrangePi Kunpeng Pro是一款性能卓越、配置丰富的开发板,适用于AI计算、边缘计算、物联网等多种应用场景。其强大的处理器和丰富的接口设计,使其在高性能计算和实际开发中具有广泛的应用前景。尽管在某些细节上存在改进空间,但总体而言,这款设备无疑是开发者和学习者的理想选择。通过这次评测,可以看出OrangePi Kunpeng Pro不仅在硬件和软件方面表现出色,更在实际应用中展示了其强大的功能和潜力。

对于笔者个人来说,整体评测下来OrangePi Kunpeng Pro给了我很多的惊喜。首先,它强大的硬件配置和出色的性能表现让我印象深刻。无论是处理复杂的计算任务还是运行大型的应用程序,它都能够轻松应对,展现出卓越的计算能力。

其次,openEuler开源操作系统和openGauss开源数据库的内置,为开发者提供了极大的便利。openEuler以其稳定、可靠和高效的特点,为服务器提供了坚实的基础。而openGauss作为一款高性能的分布式关系型数据库,为数据的存储和查询提供了强大的支持。这两个开源项目的结合,使得OrangePi Kunpeng Pro在软件开发和数据管理方面具备了出色的能力。

再者,DevKit开发套件的配备也让我对这款开发板赞不绝口。它提供了丰富的开发工具和资源,使得开发者能够更加高效地进行开发工作。无论是进行底层驱动的开发,还是进行上层应用的构建,DevKit都能够提供强大的支持,帮助开发者快速实现自己的创意和想法。

此外,OrangePi Kunpeng Pro还具有良好的兼容性和扩展性。它支持国产的openEuler操作系统和开发环境,能够满足不同开发者的需求。同时,它还提供了丰富的接口和扩展槽,方便开发者连接各种外部设备和传感器,实现更加丰富的功能和应用。

总的来说,OrangePi Kunpeng Pro给我带来了很多惊喜。它不仅在硬件性能上表现出色,更在软件生态和扩展性方面具备了强大的能力。我相信这款开发板将会成为未来开发者们进行项目开发的重要工具之一,为各种应用场景提供强大的支持,是一款性价比极高的开发版,非常值得购入!!!

这篇关于OrangePi Kunpeng Pro深度评测:性能与体验的完美融合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045581

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

韦季李输入法_输入法和鼠标的深度融合

在数字化输入的新纪元,传统键盘输入方式正悄然进化。以往,面对实体键盘,我们常需目光游离于屏幕与键盘之间,以确认指尖下的精准位置。而屏幕键盘虽直观可见,却常因占据屏幕空间,迫使我们在操作与视野间做出妥协,频繁调整布局以兼顾输入与界面浏览。 幸而,韦季李输入法的横空出世,彻底颠覆了这一现状。它不仅对输入界面进行了革命性的重构,更巧妙地将鼠标这一传统外设融入其中,开创了一种前所未有的交互体验。 想象

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

深度优先(DFS)和广度优先(BFS)——算法

深度优先 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支,当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访