HarmonyOS Next循环编程艺术:while/do-while性能对比

华为鸿蒙系统(Huawei HarmonyOS) 华为鸿蒙系统 Huawei HarmonyOS 阅读详情

在HarmonyOS Next的仓颉语言编程实践中,循环结构是实现重复任务的核心方式,其中while和do-while循环各有特点,在不同场景下的性能表现也有所差异。作为长期钻研该领域的技术人员,我将结合实际案例,深入剖析这两种循环结构的原理、特性以及优化策略。

一、循环结构原理

(一)二分法求平方根的精度控制策略

二分法求平方根是利用while循环实现迭代计算的经典案例。在这个算法中,通过不断缩小根的取值范围,逐步逼近真实的平方根值。以计算数字2的平方根为例:

main() {
    var root = 0.0
        var min = 1.0
            var max = 2.0
                var error = 1.0
                    let tolerance = 0.1 ** 10
                        while (error ** 2 > tolerance) {
                                root = (min + max) / 2.0
                                        error = root ** 2 - 2.0
                                                if (error > 0.0) {
                                                            max = root
                                                                    } else {
                                                                                min = root
                                                                                        }
                                                                                            }
                                                                                                println("2的平方根约等于:${root}")
                                                                                                }
                                                                                                ```
                                                                                                在上述代码中,`tolerance`用于控制精度,它决定了循环何时停止。每次循环中,计算当前猜测的根`root`与真实平方根的误差`error`,如果误差的平方大于` tolerance`,则继续调整`min`和`max`的值,缩小根的取值范围。这种精度控制策略确保了计算结果的准确性,但也需要根据实际需求合理设置` tolerance`的值。如果` tolerance`设置得过小,会导致循环次数增多,计算时间变长;如果设置得过大,则计算结果的精度会受到影响。在实际应用中,需要在精度和性能之间进行权衡。
## 二、do-while特性
### (一)蒙特卡洛算法中必执行一次的合理性分析
蒙特卡洛算法常用于通过随机模拟来估算数值,在这个过程中,do-while循环发挥着独特的作用。以估算圆周率为例:
```cj
import std.random.*
main() {
    let random = Random()
        var totalPoints = 0
            var hitPoints = 0
                do {
                        let x = random.nextFloat64()
                                let y = random.nextFloat64()
                                        if ((x - 0.5) ** 2 + (y - 0.5) ** 2 < 0.25) {
                                                    hitPoints++
                                                            }
                                                                    totalPoints++
                                                                        } while (totalPoints < 1000000)
                                                                            let pi = 4.0 * Float64(hitPoints) / Float64(totalPoints)
                                                                                println("圆周率近似值为:${pi}")
                                                                                }
                                                                                ```
                                                                                在这个例子中,do-while循环确保了循环体至少会执行一次。这在蒙特卡洛算法中非常合理,因为我们需要至少进行一次随机采样来获取初始数据。如果使用while循环,在某些特殊情况下(例如初始条件不满足),循环体可能一次都不会执行,导致结果不准确。而do-while循环的特性保证了无论初始条件如何,都能进行一次随机点的生成和判断,为后续的计算提供了基础数据,使得算法更加稳健可靠。
## 三、循环优化建议
### (一)误差容忍度(tolerance)的数学建模
在循环算法中,误差容忍度` tolerance`对性能有着至关重要的影响,合理的数学建模可以帮助我们更好地选择` tolerance`的值。以二分法求平方根为例,假设我们希望在保证一定精度的前提下尽量提高计算效率。我们可以通过数学分析来确定` tolerance`与循环次数之间的关系。

设` tolerance`为误差容忍度,每次循环中根的取值范围缩小一半。假设初始范围为`[a, b]`,经过`n`次循环后,范围缩小为`[(a + b) / 2^n, (a + b) / 2^n]`。为了满足精度要求,我们希望`(b - a) / 2^n <= tolerance`。通过对数运算可以得到`n >= log2((b - a) / tolerance)`。例如,在计算数字2的平方根时,初始范围`[1, 2]`,如果` tolerance = 0.1 ** 10`,通过计算可以大致估算出循环次数,从而评估算法的时间复杂度。根据这个关系,我们可以根据实际需求和性能要求,选择合适的` tolerance`值,在保证计算精度的同时,优化循环性能,避免不必要的循环计算,提高程序的运行效率。

在HarmonyOS Next的开发中,深入理解while和do-while循环的原理和特性,合理运用精度控制策略和误差容忍度的数学建模,能够帮助开发者编写出高效、稳定的循环代码,提升应用程序的性能和质量。 
【鸿蒙教程】华为HarmonyOS NEXT 应用开发 实现日常提醒应用 主要依据tab组件以及tab 组件的BottomTabBarStyle的构造函数。首页page/MinePage.ets代码如下@Entry@Component// 构造类 自定义底部切换按钮Column() {.width(24)build() {Column() {HomeTabs();//首页}.tabBar(this.TabBuilder(0,$r('app.media.ic_home'),$r('app.media.ic_home_selected'),'首页')) 阅读详情

相关推荐

鸿蒙系统-初见

初见鸿蒙Os~

小码哥的博客 1493

编写一个函数,用户输入任意两个数字的任意算术运算(简单的计算器功能),并能弹出运算后的结果

function compute() { var num1 = prompt("请输入num1"); var sign = prompt("请输入运算符"); var num2 = prompt("请输入num2"); if (sign == "+") { return parseFloat(num1) + parseFloat(num2); } else if (sign == "-") { return parseFloat(nu.

m_0_1_0_1的博客 3643

HarmonyOS NEXT:解密从概念到实践的技术创新与应用前景

HarmonyOS是目前华为手机所搭载的鸿蒙系统,它在Open Harmony的基础上兼容了安卓的AOSP,所以可以使用安卓APK应用,HarmonyOS属于华为在当前阶段过渡使用的系统,原生鸿蒙的应用生态尚未发展起来,兼容安卓应用可以让用户有更好的使用体验,为原生鸿蒙应用生态的建设留出时间窗口。

ztK63LrD的博客 3669

【粉丝福利社】鸿蒙HarmonyOS NEXT开发之路 卷1:ArkTS语言篇

在数字化浪潮的推动下,全球科技领域正经历着前所未有的变革。我国作为这一变革的积极参与者,不仅在多个科技前沿领域取得了显著成就,更在计算机操作系统这一核心技术领域孕育出了具有自主知识产权的创新成果—鸿蒙系统(HarmonyOS)。这一系统开发成功不仅是国人的骄傲,更是全球技术竞争中的一股新兴力量。鸿蒙系统的诞生,标志着我国在全球操作系统领域迈出了坚实的一步。凭借其独特的分布式架构、跨平台能力以及对开发者友好的设计理念,它为智能设备带来了全新的使用体验。

愚公智库 10万+

聊聊鸿蒙HarmonyOS NEXT 的技术细节

先来聊聊内核,内核是操作系统内最基础的构件,因此内核的设计对于操作系统的外部特性也有着至关重要的影响。

finogeeks的博客 7229

华为鸿蒙HarmonyOS Next基础开发教程

《HarmonyOSNext开发指南》摘要: HarmonyOSNext是华为2025年推出的纯自研分布式操作系统,完全脱离安卓生态,采用ArkTS语言和微内核架构,具备原生精致、流畅、安全等六大特性。本文系统介绍了开发环境搭建(DevEcoStudio+SDK)、ArkTS语言基础(静态类型检查/声明式UI)、UI开发框架(声明式布局/组件化)、状态管理机制(@State/@Link等装饰器)、本地存储(Preferences)和网络请求(http模块)等核心内容,并包含调试技巧与发布流程。通过60天学习

abcdlwt的博客 1971

华为鸿蒙系统HarmonyOS学习之十:鸿蒙HarmonyOS微内核技术

华为鸿蒙系统HarmonyOS学习之十:鸿蒙HarmonyOS发展史与未来

jyl_sh的专栏 1万+

鸿蒙HarmonyOS NEXT开发之路 卷1:ArkTS语言篇

在数字化浪潮的推动下,全球科技领域正经历着前所未有的变革。我国作为这一变革的积极参与者,不仅在多个科技前沿领域取得了显著成就,更在计算机操作系统这一核心技术领域孕育出了具有自主知识产权的创新成果—鸿蒙系统(HarmonyOS)。这一系统开发成功不仅是国人的骄傲,更是全球技术竞争中的一股新兴力量。鸿蒙系统的诞生,标志着我国在全球操作系统领域迈出了坚实的一步。凭借其独特的分布式架构、跨平台能力以及对开发者友好的设计理念,它为智能设备带来了全新的使用体验。

颜颜yan_的博客 1121

【鸿蒙生态崛起,开发者有哪些机遇与挑战?】HarmonyOS NEXT 引领数字化未来

鸿蒙系统不断创新发展,在智能手机、穿戴、车载、家居等行业领域的应用越来越广泛。HarmonyOS NEXT的发布标志着鸿蒙操作系统进入了全新发展阶段,揭示了在智能生态建设方面的最新成果,原生鸿蒙将为全球用户带来更加智能、互联的数字化生活。

Morse_Chen的博客 6949

华为鸿蒙HarmonyOS Next鸿蒙开发教程

HarmonyOSNext是华为新一代分布式操作系统,具有原生应用生态、增强分布式能力、开发效率提升等优势。本指南从开发环境搭建开始,详细介绍了HarmonyOSNext的核心架构、应用模型、ArkTS语言基础,以及UI开发、状态管理、数据存储等关键技术。特别强调了分布式应用开发流程,包括设备发现、能力共享等特色功能。最后讲解了应用测试与发布流程,并提供了学习路径建议。教程适合零基础和有经验的开发者,通过系统学习和实践,能够掌握HarmonyOSNext开发的核心技能。随着鸿蒙生态的快速发展,掌握这些技术将

2501_93196080的博客 1336

C/C++代码迁移至HarmonyOS NEXT

随着HarmonyOSNEXT的发布,C/C++代码的跨语言调用成为开发者面临的主要挑战。传统NAPI接口复杂且学习成本高,导致迁移效率低下。为解决这一问题,AKI(AlphaKernelInteracting)应运而生,通过FFI框架和语法糖设计,简化了JS与C/C++的跨语言调用,显著减少了代码量和开发时间。AKI支持同步与异步接口绑定,优化了内存管理和线程安全,提升了应用性能。实际案例表明,AKI在购物应用、社交电商和图像处理软件中均表现出色,代码量减少90%以上,开发效率提升30%-50%。

2401_82505179的博客 1226

HarmonyOS-鸿蒙系统概述

华为“1+8+N” 全场景智慧战略,其中居于核心的“1”是智能手机,“8”是指围绕手机的车机、音箱、耳机、手表/手环、平板、大屏、PC、AR/VR产品,N则指众多泛IoT设备。

Hidanchaofan的博客 3504

【HarmonyOS NEXT】鸿蒙系统用户文件uri

uri字段说明文件管理器的根目录。文件在根目录下的相对路径。例如:'Download/'和'Documents/'。'test.txt'用户文件系统中存储的文件名,支持的文件类型为文件管理器支持的所有类型,以文件管理器为准,例如txt、jpg、mp4和mp3等格式的文件。uri字段说明表示这个uri是媒体文件。'Photo'Photo表示这个uri是媒体文件中的图片或者视频类文件。'Audio'表示这个uri是媒体文件中的音频类文件。''

wu1004019946的博客 2273

华为鸿蒙系统版本发展史

鸿蒙OS凭借多终端开发IDE,多语言统一编译,分布式架构Kit提供屏幕布局控件以及交互的自动适配,支持控件拖拽,面向预览的可视化编程,从而使开发者可以基于同一工程高效构建多端自动运行App,实现真正的一次开发,多端部署,在跨设备之间实现共享生态。微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。2025年5月8日,华为公司在深圳举办鸿蒙电脑技术与生态沟通会,标志着搭载鸿蒙操作系统的“鸿蒙电脑”正式亮相,国产操作系统在个人电脑(PC)领域实现重要突破。

鹿鸣天涯 8106

鸿蒙HarmonyOS NEXT开发:ArkUI高性能开发(组件嵌套优化)

本章节将从原理角度分析,通过ArkUI框架的执行流程,以及自定义组件的生命周期两个角度,来分析组件过度嵌套对性能的影响。

diongdingQAQ的博客 1440

从零实现Unitree Go2的SLAM建图与导航:手把手集成slam_toolbox和nav2(附Rviz2可视化配置)

本文详细指导如何在Unitree Go2四足机器人上集成slam_toolbox和nav2,实现SLAM建图与导航功能。从ROS2环境配置、雷达数据处理到slam_toolbox参数优化,再到nav2路径规划与Rviz2可视化调试,提供完整解决方案。特别适合机器人开发者快速掌握ROS2导航栈在Unitree Go2上的应用实践。

weixin_33737134的博客 1230

胡桃讲编程:华为鸿蒙系统能装安卓安装包吗?

老版本鸿蒙(2/3/4 普通版)可以直接装安卓 APK,兼容流畅,适合日常跑小工具、创作类软件;纯血鸿蒙(NEXT / 鸿蒙 5 及以后)不支持直接安装 APK,只支持鸿蒙原生应用,安全性和流畅度更高;纯血鸿蒙想用安卓应用只能靠第三方兼容工具,体验一般,仅适合应急;对咱们做内容创作、跑开发工具的人来说,老华为设备足够用,新鸿蒙设备优先适配原生版软件更稳妥。鸿蒙从兼容安卓到走向独立,是一套完整的技术路线,就像咱们这些地下程序员,从踩坑摸索到自成体系,一步一步,都是在往更稳、更强的方向走。

2503_93347234的博客 2836

银河麒麟V10SP1实战:5步搞定AD域登录(附Samba+Winbind配置详解)

本文提供银河麒麟V10 SP1操作系统无缝集成Windows AD域的实战指南。文章深入解析了Samba、Winbind与Kerberos三大核心组件的协作原理,并详细阐述了从环境准备、软件包安装、配置文件定制到执行加域及排错的全流程。特别针对2403等新版本提供了关键配置差异与避坑要点,旨在帮助企业运维人员实现高效、稳定的域环境登录与管理。

weixin_29269441的博客 289

鸿蒙OpenHarmony、HarmonyOS、HarmonyOS NEXT的区别

鸿蒙OpenHarmony、HarmonyOS、HarmonyOS NEXT三个版本区别

01234567890 1万+

构建基于知识图谱的金融监管合规系统

金融行业是一个高度监管的领域,金融机构需要遵守众多复杂的法规和政策。传统的金融监管合规方式往往依赖于人工审查和简单的规则引擎,效率低下且容易出错。构建基于知识图谱的金融监管合规系统的目的在于利用知识图谱强大的知识表示和推理能力,实现对金融业务数据的自动化分析和合规检查,提高监管合规的效率和准确性。本系统的范围涵盖了金融机构的各类业务,如银行业务、证券业务、保险业务等。

AI天才研究院 1166

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

SMFA(自调制特征聚合模块): SMFA模块用于协同建模局部和非局部信息,它分为两个分支:一个是EASA(Efficient Approximation of Self-Attention,简化的自注意力分支),用于捕获非局部信息;另一个是LDE(Local Detail Estimation,局部细节估计分支),用于捕获局部细节。EASA通过对输入特征进行下采样,然后利用全局特征的方差进行调制,再与原始特征进行聚合,提取非局部结构信息。LDE分支则通过卷积操作提取输入特征中的高频局部信息。

qq_64693987的博客 2208

HarmonyOS Next(纯血鸿蒙)它到底像谁

后续再也没有写关于鸿蒙的文章。没错,我确实入坑了鸿蒙,并且成功上架了几款App和元服务,虽然当前的用户量还比较少,但鸿蒙开发的整体流程已然蹚了一遍,是时候来做一些总结了。本篇从应用开发的角度聊聊鸿蒙它像谁?它有哪些不一样的特征?开发者怎么快速入门?

9601

【软件系统架构】系列五:TCP/IP 协议栈

TCP/IP协议栈是现代网络通信的核心框架,采用分层架构设计,包含应用层、传输层、网络层和网络接口层四层结构。应用层提供HTTP、FTP等用户服务接口;传输层通过TCP/UDP实现端到端通信;网络层负责IP寻址和路由选择;网络接口层处理物理数据传输。数据在传输过程中经历层层封装,从应用层报文最终转换为物理层的比特流。该协议栈通过三次握手建立连接、数据传输、四次挥手断开连接的流程,确保可靠通信。作为互联网的基础,TCP/IP协议栈具有跨平台、标准化和可扩展的特点,广泛应用于各类网络设备和嵌入式系统中。

moton2017的博客 2160
上一篇: HarmonyOS Next条件表达式深度剖析:if与模式匹配
下一篇: HarmonyOS Next迭代器模式:for-in与区间遍历秘笈
SameX-4869
博客等级 码龄18年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值