首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏c语言与cpp编程

    C++性能优化

    前言 性能优化不管是从方法论还是从实践上都有很多东西,从 C++ 语言本身入手,介绍一些性能优化的方法,希望能做到简洁实用。 ,尤其是常量可以表示成2^n时 ++i和i++本身性能一样,但不同的语境效果不一样,如array[i++]比arry[++i]性能好;当依赖自增结果时,++i性能更好,如a=++b,a和b可复用同一个寄存器 如何进一步优化? 分析 优化前还是得找一下性能热点,下面是 vtune 结果的截图(虽然 cpu time 和汇编指令的消耗对应得不是特别好): ? vtune_1 ? 回顾 前面两个实例分别从编译器和内存使用的角度介绍了一些性能优化的方法,后面内容则会回到cpu,从指令并行的角度看看我们常见的逻辑控制有哪些可以优化的点。 从原理上来说,这个系列的优化不是特别区分语言,只是这里我们用C++来描述。

    98642发布于 2021-03-25
  • 来自专栏软件研发

    C++性能优化:利用优化技术提升程序性能

    C++性能优化:利用优化技术提升程序性能在软件开发中,性能优化是一个重要的课题。当我们开发C++程序时,掌握一些优化技术可以显著提高程序的性能。 本文将介绍一些常用的优化技术,帮助你优化C++程序并获得更好的性能。1. 选择合适的数据结构与算法在性能优化的过程中,选择合适的数据结构与算法非常重要。 2. 减少内存分配次数频繁的内存分配与释放会导致内存碎片化,进而影响程序的性能。为了减少内存分配次数,可以采用以下方法:尽量使用栈内存而不是堆内存来存储变量。 总结起来,优化C++程序的关键在于选择合适的数据结构和算法,减少内存分配次数,充分利用局部性原理,减少函数调用开销,合理利用并行计算技术,以及使用性能分析工具进行优化。 通过灵活应用这些优化技术,我们可以大大提升C++程序的性能,提供更好的用户体验。当谈到C++性能优化时,很难为一个通用的示例代码,因为优化技术通常需要根据具体的应用场景和代码特点来进行定制化。

    97511编辑于 2023-12-05
  • 来自专栏ThoughtWorks

    性能优化那些事儿(2

    用第二步得到的吞吐量执行 5 分钟,然后在第四步得到的极限值执行 1 分钟,再回到第二步的吞吐量执行 5 分钟,再到第四步的权限值执行 1 分钟,如此往复个一段时间,比如 2 天。 2)Linux中Swap强烈建议关闭,打开坏处多于好处,会有意想不到的问题。3)高流量的应用需要注意网卡中断问题,使用CPU亲和性绑定网卡。 2)锁竞争:单机环境下,锁的使用可能会带来大量的线程资源浪费,从而给系统带来性能开销;而分布式环境下,使用分布式锁也可能造成大量的请求堆积,影响整个系统性能。 需要着重强调的是任何的性能优化都得结合业务场景明确已知的性能问题和性能目标,不能为了优化优化。 ---- - 相关阅读 - 性能优化那些事儿(1) 浅谈机器学习模型推理性能优化 点击【阅读原文】可至洞见网站查看原文&加粗字体部分的相关链接。

    39620编辑于 2022-03-04
  • C++ 如何进行性能优化

    C++ 中进行性能优化是一个多方面的过程,涉及代码编写、编译器优化、算法选择和数据结构设计等多个方面。以下是一些常见的性能优化技巧:1. 选择合适的编译器和优化选项编译器选择:使用高性能的编译器,如 GCC、Clang 或 MSVC。优化选项:使用编译器的优化选项,如 -O2 或 -O3,这些选项可以显著提高代码的执行效率。 g++ -O3 -o myprogram myprogram.cpp2. 优化算法和数据结构算法选择:选择时间复杂度和空间复杂度更低的算法。 使用性能分析工具性能分析工具:使用性能分析工具(如 gprof、Valgrind、Intel VTune)来识别性能瓶颈,针对性地进行优化。gprof . 循环优化:手动展开循环,减少条件判断。并行化:利用多线程和 SIMD 指令。缓存优化:确保数据访问具有良好的局部性。避免过度抽象:减少虚函数调用,利用模板元编程。性能分析工具:使用工具识别性能瓶颈。

    65600编辑于 2025-01-27
  • 来自专栏大数据平台TBDS

    Hiveserver2 性能优化与GC优化

    这种故障对应于上面介绍的“故障现象1”,通过jdbc无法正常连接到hiveserver2。为了解决该故障,可以通过优化内存GC可以缓解hiveserver2的GC卡死问题。 以下是hiveserver2发生卡死,jdbc无法连接到hiveserver2的时候,统计GC的结果: 可以看到,当hiveserver2发生严重卡死时,也就是hiveserver2 进程发生严重GC 因此,可以通过优化hiveserver2的内存GC来优化hiveserver2,使之支持更高的并发、能够执行更复杂的sql任务。 因此,将hiveserver2迁移到资源非常空闲的另外一台服务器。 4.2 采用优化GC机制和参数 之前hiveserver2进程的启动参数没有添加GC参数,也就是说采用系统默认的GC机制。 经过上面两种优化方法之后,hiveserver2目前非常稳定。当然基于hadoop平台的hiveserver2本身支持的jdbc并发连接数有限,不可能做到关系型数据库那样的oltp高并发性能

    6.4K103发布于 2018-06-19
  • 来自专栏vivo互联网技术

    【干货】Elasticsearch索引性能优化 (2)

    Elasticsearch索引性能优化 (2) 本文翻译自QBox官方博客的“Elasticsearch索引性能优化”系列文章中的第二篇,版权归原作者所有。 如果想索引大批量的文档,并不需要立刻就搜索到新的索引信息,为了优化索引性能甚至搜索性能,可以临时降低刷新的频率,直到索引操作完成。 一个索引库的分片由多个段组成。 本文将继续关注Elasticsearch的索引性能调优,重点聚焦在集群和索引级别的各种索引配置项设置。 该设置允许每次有max_thread_count + 2个线程操作磁盘,所以设置为1表示支持3个线程。 index.translog.interval - 检查是否需要flush的时间间隔,随机在该时间到2倍之间取值,默认为5秒。

    1.3K30发布于 2019-03-19
  • 来自专栏vivo互联网技术

    【干货】Elasticsearch索引性能优化 (2)

    Elasticsearch索引性能优化 (2) 本文翻译自QBox官方博客的“Elasticsearch索引性能优化”系列文章中的第二篇,版权归原作者所有。 如果想索引大批量的文档,并不需要立刻就搜索到新的索引信息,为了优化索引性能甚至搜索性能,可以临时降低刷新的频率,直到索引操作完成。 一个索引库的分片由多个段组成。 本文将继续关注Elasticsearch的索引性能调优,重点聚焦在集群和索引级别的各种索引配置项设置。 该设置允许每次有max_thread_count + 2个线程操作磁盘,所以设置为1表示支持3个线程。 index.translog.interval - 检查是否需要flush的时间间隔,随机在该时间到2倍之间取值,默认为5秒。

    77440发布于 2019-04-19
  • 来自专栏项目文章

    Java性能优化学习2性能优化切入点(下)

    性能优化的七个点 性能优化分为,业务优化和技术优化。业务优化一般属于产品和管理的范畴,作为后端开发,一般应有技术优化。 技术优化一般有七类技术手段。 性能优化的重点是在照顾性能的前提下,达到资源利用的最优状态。 4、资源冲突优化 在操作系统中就有提到过共享资源会带来资源冲突。 现实开发中的性能问题,和锁有关的是非常多的,比如说数据库的行级锁,表锁,java中的各种锁等等,在底层操作系统中,还有 CPU、操作系统的锁等等。 对资源的竞争,会造成很严重的性能问题,所以在开发的时候,需要注意并发的问题,并发很有可能会引起资源冲突。 5、算法优化 算法优化无外乎 八大排序的选择,进行代码调优。 7、JVM优化 JVM优化需要注意的点特别多,因为JAVA会很大程度上受到JAVA的制约,对JVM虚拟机进行优化,如果参数优化不当,会造成OOM等比较严重的后果。

    22110编辑于 2024-06-07
  • 来自专栏项目文章

    Java性能优化学习2性能优化切入点(上)

    性能优化的七类技术手段 性能优化分为,业务优化和技术优化。业务优化一般属于产品和管理的范畴,作为后端开发,一般应有技术优化。 技术优化一般有七类技术手段。 性能优化的重点是在照顾性能的前提下,达到资源利用的最优状态。 1、复用优化 写代码的时候,一般一个方法函数用的多的话,我们就会设置成公共的方法,这就是复用的意思,以后直接调用就可以了。 2、计算优化 (1)并行执行 ①多机集群:采用负载均衡的方式,将流量或者计算拆分多个部分,比如说hadoop、mapreduce。 (2)同步-》异步 异步的编程方式可以支持横向扩容,缓解瞬时压力。 (3)惰性加载 采用一些比较好的设计模式来优化业务模块,比如单例模式,代理模式等等。 3、结果集优化 都知道 XML 的表现形式是非常好的,那为什么还有 JSON 呢?

    21310编辑于 2024-06-07
  • 来自专栏不温卜火

    Spark性能优化 (2) | 算子调优

    因此,mapPartitions算子适用于数据量不是特别大的时候,此时使用mapPartitions算子对性能的提升效果还是不错的。 二. foreachPartition 优化数据库操作 在生产环境中,通常使用foreachPartition算子来完成数据库的写入,通过foreachPartition算子的特性,可以优化写数据库的性能 针对上述的两个问题,我们分别进行分析: 针对第一个问题,既然分区的数据量变小了,我们希望可以对分区数据进行重新分配,比如将原来4个分区的数据转化到2个分区中,这样只需要用后面的两个task进行处理即可, 注意:local模式是进程内模拟集群运行,已经对并行度和分区数量有了一定的内部优化,因此不用去设置并行度和分区数量。 image.png 使用reduceByKey对性能的提升如下: 1. 本地聚合后,在map端的数据量变少,减少了磁盘IO,也减少了对磁盘空间的占用; 2.

    1.7K20发布于 2020-10-28
  • 来自专栏前端博客

    webpack性能优化(2):splitChunks用法详解

    之前写的《webpack性能优化(0):webpack性能优化概况-优化构建速度》、《webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载》如果使用vue-cli,默认生成的vendor.js true,    cacheGroups: {        default: {            reuseExistingChunk: true,            minChunks: 2, externals配置启用CDN,提高缓存效率与打包分析,具体参看《webpack性能优化(0):webpack性能优化概况-优化构建速度 》路由懒加载分组分组修改方法如下:const Role = ( /p/10314438.htmlvuecli3项目中webpack4配置(三)代码分割 https://juejin.im/post/6844903879046332424转载本站文章《webpack性能优化 (2):splitChunks用法详解》,请注明出处:https://www.zhoulujun.cn/html/tools/Bundler/webpackTheory/8554.html

    2.6K42编辑于 2023-03-18
  • 来自专栏老陈笔记

    vue2基础性能优化

    # 长列表性能优化   Vue 会通过 Object.defineProperty 对数据进行劫持,来实现视图响应数据的变化,然而有些时候我们的组件就是纯粹的数据展示,不会有任何改变, 我们就不需要 Vue 这样对于页面加载性能上会有很大的提升,也提高了用户体验。 vue实现图片懒加载最简单的方法是使用插件,如下: 1、安装插件 npm install vue-lazyload --save-dev 2、在入口文件 man.js 中引入并使用 import VueLazyload element-ui (opens new window) 组件库为例: 1、安装 babel-plugin-component npm install babel-plugin-component -D 2、   如果你的应用存在非常长或者无限滚动的列表, 我们可以采取scroll滑动刷新分页加载,通过滑动多次请求数据,再把数据通过concat来拼接在数组里来优化性能; 或者通过后端协助直接进行传参分页数据

    1.1K30编辑于 2023-04-09
  • 来自专栏前端博客

    webpack性能优化(2):splitChunks用法详解

    之前写的《webpack性能优化(0):webpack性能优化概况-优化构建速度》、《webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载》如果使用vue-cli,默认生成的vendor.js true,    cacheGroups: {        default: {            reuseExistingChunk: true,            minChunks: 2, externals配置启用CDN,提高缓存效率与打包分析,具体参看《webpack性能优化(0):webpack性能优化概况-优化构建速度 》路由懒加载分组分组修改方法如下:const Role = ( /p/10314438.htmlvuecli3项目中webpack4配置(三)代码分割 https://juejin.im/post/6844903879046332424转载本站文章《webpack性能优化 (2):splitChunks用法详解》,请注明出处:https://www.zhoulujun.cn/html/tools/Bundler/webpackTheory/8554.html

    2.2K20编辑于 2023-03-18
  • 来自专栏明明如月的技术专栏

    性能优化方法论系列】三、性能优化的核心思想(2

    3.3 提高资源利用率 3.3.1 空间换时间 空间换时间是性能优化最常用的手段之一。 其中缓存就是空间换时间的一种典型应用。 CPU 缓存、浏览器缓存、CDN 缓存、DNS 缓存、内存缓存、 Redis 缓存等,它们都是将数据缓存在离使用者更近的地方,或者读取速度更快的存储介质中,通过空间换时间的方式实现性能优化的。 ---- 很多架构的设计都是用空间换时间的思想实现性能优化的,如集群架构、读写分离、分库分表、分布式架构。 由于单机承载量的有限性,可以通过加机器化整为零,分担请求。 在读多写少的场景下,可以通过读写锁、乐观锁的方式降低冲突的范围或者说降低冲突带来的性能损耗来提高性能。 那么我们如何利用空间局部性进行性能优化呢? 我们先看一下 MySQL 中的一个案例: 我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级。

    55610编辑于 2022-07-12
  • 来自专栏《C++与 AI:个人经验分享合集》

    《探索 Caffe2C++接口在移动设备上的性能优化之路》

    在当今移动应用日益智能化的时代,将深度学习框架如 Caffe2C++接口应用于移动设备上已成为众多开发者的目标。然而,移动设备资源相对有限,如何优化性能成为了关键挑战。 但移动设备的处理器性能、内存容量以及电池续航能力都无法与传统的服务器或高性能计算机相比。Caffe2C++接口虽然提供了高效的开发途径,但要在移动设备上流畅运行仍需精心优化。 三、内存管理优化:高效利用有限资源 移动设备的内存容量有限,因此优化 Caffe2 C++接口的内存使用至关重要。 六、持续优化与未来展望 Caffe2C++接口在移动设备上的性能优化是一个持续的过程。随着移动设备硬件技术的不断发展,如新型处理器的推出、内存技术的进步等,需要不断地调整和优化优化策略。 通过对模型压缩、内存管理优化、计算优化以及电源管理优化等多方面的综合努力,Caffe2C++接口能够在移动设备上展现出更好的性能,为移动深度学习应用的发展奠定坚实的基础。

    1.4K10编辑于 2024-12-18
  • 来自专栏呆呆熊的技术路

    linux性能优化学习笔记(2)-性能排查工具篇

    cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能 bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试 us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。

    1.6K20发布于 2019-07-15
  • 来自专栏大数据技术架构

    Hive调优 | HiveServer2 性能优化与GC优化

    这种故障对应于上面介绍的“故障现象1”,通过jdbc无法正常连接到hiveserver2。为了解决该故障,可以通过优化内存GC可以缓解hiveserver2的GC卡死问题。 以下是hiveserver2发生卡死,jdbc无法连接到hiveserver2的时候,统计GC的结果: 可以看到,当hiveserver2发生严重卡死时,也就是hiveserver2 进程发生严重GC 因此,可以通过优化hiveserver2的内存GC来优化hiveserver2,使之支持更高的并发、能够执行更复杂的sql任务。 因此,将hiveserver2迁移到资源非常空闲的另外一台服务器。 4.2 采用优化GC机制和参数 之前hiveserver2进程的启动参数没有添加GC参数,也就是说采用系统默认的GC机制。 经过上面两种优化方法之后,hiveserver2目前非常稳定。当然基于hadoop平台的hiveserver2本身支持的jdbc并发连接数有限,不可能做到关系型数据库那样的oltp高并发性能

    2.3K20发布于 2021-12-02
  • 来自专栏数据工人

    极致性能2):低延时优化之基础

    (2) 金融服务市场特性决定了系统必须要求低延迟并且具有稳定的系统性能,这样才能支持高频交易、市场数据接收分发和交换数据处理。 本篇主要介绍说下跟低延迟相关的BIOS配置和Linux操作系统优化的建议,主要针对Gen10的HPE Synergy计算模块以及HPE ProLiant DL系列服务器获得最低延迟性能。 -自动PCI2core关联(应用程序无需改写或特意设定)。 -数据Direct I/O性能最佳。 —消除缓存窥探(snooping)。 做任何优化之前,用下面的工具做个快照或者性能、配置备份,以便跟踪什么配置提升/降低了性能。 以下针对Linux的配置优化,仅针对该机型。HPE比较操蛋的是,每个机型配置都会改变,Dell不知道是不是这样。

    7.6K10发布于 2020-02-14
  • 来自专栏coding for love

    5-10~11 webpack 性能优化2

    2. 下面我们看下如何来使用: 首先安装该插件,这里要注意 webpack4 和 webpack2/3 安装的版本并不一样。 webpack 4 npm install --save-dev autodll-webpack-plugin webpack 2 / 3 npm install --save-dev autodll-webpack-plugin 即将被抛弃的 dll 上面可以看到,使用 dll 能极大提升构建速度,可是 dll 本身就是为了弥补 webpack 打包的不足而出现的,随着 webpack 的升级和优化,额外使用插件实现 dll 带来的提升已经越来越小

    1.5K10发布于 2020-05-26
  • 来自专栏前端开发面试

    前端面试前端性能优化2

    不论是什么样的前端面试,总会问到的一个问题:前端性能优化。相信如果这个问题没有答好,在面试中会很被动。于是,趁着这个天天宅的时期,好好的整理了一番。 impotant4、优化css reset,项目中不会用到这么多reset5、避免使用css表达式动画优化1、可以使用transform开启图形加速2、用translate取代left,可以避免页面重排选择器优化 1、选择器嵌套尽量不要超过三层2、id选择器尽量不要嵌套3、使用继承体积优化1、提取公共CSS三、JS优化运行速度1、如果没有兼容问题,尽量使用原生方法2、根据兼容浏览器的最低版本,考虑是否使用polyfill3 DOM,减少Diff时间2、使用benchmark测试不同算法的性能,择优四、网络优化请求数量上限:1、每个网站最多允许同时6个请求,可以考虑将资源分类部署请求速度优化:1、使用CDN,可以加速资源的请求速度加载时间分配 、避免使用服务端字体五、React性能优化1、优化react事件,避免使用闭包函数2、使用持续化数据结构Immutable对redux进行管理3、优化shuoldComponentUpdate生命周期定义基础组件

    84830编辑于 2023-01-04
领券