Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vulkan API 与 OpenGL ES API 的对比,CPU占有率能耗大pk

Vulkan API 与 OpenGL ES API 的对比,CPU占有率能耗大pk

作者头像
用户9732312
发布于 2022-05-13 10:43:32
发布于 2022-05-13 10:43:32
4.9K0
举报
文章被收录于专栏:ADAS性能优化ADAS性能优化

在移动领域,传统API的硬件程序模型已不再很好匹配硬件,而且CPU往多核发展后,传统API不能有效利用多核优势。大家期望着替代品的出现,于是Mantle、DX12、Metal之类的新软件应运而生,而Khronos(The Khronos Group, 一个由领先硬件和软件公司组成的开源组织)则开发了Vulkan作为新的3D图形接口需求的解决方案。

CPU占用率

如同OpenGL,Vulkan针对实时3D程序(如电子游戏)设计,计划提供高性能和低CPU管理负担(overhead)。Vulkan是OpenGL与OpenGL ES的继任者,并且更加高效。ARM日前便公布了一段视频对比了Vulkan API 与OpenGL ES API 在CPU占用率及能效上优劣。

OpenGL ES的CPU占用率在不同情况下大约有20-50%,部分情况下甚至达到60%以上,而Vulan的CPU占用率就低太多了,绝大部分情况下都在5%,或者10%以内,相比OpenGL ES降幅明显,多线程支持非常给力。

能耗

另一方面,支持多核处理器也有助于降低能耗,视频中有具体的数值对比,同样的画面OpenGL ES消耗了1270J能量,Vulkan消耗的则是1123J,减少了15%,这对改善续航时间来说是相当大的变化,毕竟玩游戏的情况下手机处理器消耗电力还是非常快的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android性能优化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
超全 | 只有高手才知道的C语言高效编程与代码优化方法(一)
大雄总结了一些让程序运行更快的方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码。
老九君
2019/05/09
6.3K0
C-指针进阶知识
函数指针使用时,一般写作: void (*add2)(int) = add1; //add2是一个函数指针,解引用后就是一个函数,所以解引用后用来承接一个函数 //或者 void (*add2)(int); add2 = &add1; //add2是一个函数指针,所以add2用来承接一个函数的地址(函数取地址了)
用户10551528
2024/08/09
1290
C-指针进阶知识
3D Lut 电影级调色算法 附完整C代码
长话短说,3d lut(全称 : 3D Lookup table )它是通过建立一个颜色映射表,对图像的色调进行重调的算法。
cpuimage
2018/05/11
4.6K2
【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?
糖糖小伙,你搞C语言嵌入式开发这么久了,我来考考你u8、u16、u32、s8、s16、s32是什么意思啊?你要是回答的让我满意了,给你升职加薪,从此走上人生巅峰呦~
全栈程序员站长
2022/11/03
4.9K0
【☠️️社死现场の老板来了☠️️】小伙,搞C语言嵌入式开发这么久了,还不知道u8、u16、u32、s8、s16、s32是什么意思啊?
C++23编程新特性
有人说C++ 23是一个小版本,相对C++11或者C++20而言,它就像站在巨人肩膀之上的小矮子。但实际上C++23版本正式克服了很多困难推出了比C++14规模要大且可以媲美C++17的改进。本篇文章,将主要对C++23的新特性做一个介绍。
CPP开发前沿
2024/04/26
2.6K0
C++23编程新特性
C语言回调函数,提升C技巧必备
“函数返回值类型”表示该指针变量可以指向具有什么返回值类型的函数;“函数参数列表”表示该指针变量可以指向具有什么参数列表的函数。这个参数列表中只需要写函数的参数类型即可。
混说Linux
2023/02/24
1.2K0
C语言回调函数,提升C技巧必备
Redis 源码简洁剖析 02 - SDS 字符串
C 语言 string 函数,在 C 语言中可以使用 char* 字符数组实现字符串,C 语言标准库 string.h 中也定义了多种字符串操作函数。
Yano_nankai
2022/03/24
3770
Redis 源码简洁剖析 02 - SDS 字符串
结构体定义 typedef struct 用法详解和用法小结
typedef可以声明新的类型名来代替已有的类型名,但却不能增加新的类型。   typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。   在编程中使用typedef目的一般有两个,一个是给变量提供一个易记且意义明确的新名字(类型有新别名,方便变量的定义),另一个是简化一些比较复杂的类型声明。
Twcat_tree
2022/11/30
1.5K0
目前CSDN上最全面的C语言讲解如何用更高层次编写嵌入式C代码
本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理;分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编译器为例,介绍了该编译器的特性、对未定义行为的处理以及一些高级应用;在此基础上,介绍了防御性编程的概念,提出了编程过程中就应该防范于未然的多种措施;提出了测试对编写优质嵌入式程序的重要作用以及常用测试方法;最后,本文试图以更高的层次看待编程,讨论一些通用的编程思想。
苏州程序大白
2021/08/13
2.5K0
目前CSDN上最全面的C语言讲解如何用更高层次编写嵌入式C代码
C++ 动态新闻推送 第20期
从reddit/hackernews/lobsters/meetingcpp摘抄一些c++动态。
王很水
2021/08/31
6740
C++ 动态新闻推送 第20期
【C语言】一篇通关所有 “关键字”,值得收藏篇!
C语言关键字是编程语言中的保留词,用于执行特定的操作。关键字有特殊含义,不能用作变量、函数、或任何其他标识符的名称。关键字为C编译器提供语法结构,使其能够理解和执行程序。
LuckiBit
2024/12/11
3480
STM32通用FLASH管理软件包——SFUD/FAL
本次介绍的两个软件包SFUD/FAL都与FLASH有关,并且都可以独立使用或者结合在一起使用,两个软件包都对操作系统无依赖,可以使用裸机移植,也很方便移植到各种系统。
AIoT-KK
2020/07/13
2.3K0
STM32通用FLASH管理软件包——SFUD/FAL
C语言基础总结
我学习的第一门编程语言是Java,所以之前一直没有系统学习过C语言。这篇文章主要就是我学习过程的一个总结,方便以后复习查看。
害恶细君
2024/09/16
2420
C语言基础总结
C语言编程规范 clean code
规则并不是完美的,通过禁止在特定情况下有用的特性,可能会对代码实现造成影响。但是我们制定规则的目的“为了大多数程序员可以得到更多的好处”, 如果在团队运作中认为某个规则无法遵循,希望可以共同改进该规则。参考该规范之前,希望您具有相应的C语言基础能力,而不是通过该文档来学习C语言。
C语言与CPP编程
2021/03/10
5.9K0
利用MDK的FLM文件制作通用flash驱动
在进行Flash操作时,一般我们需要设计一套Flash抽象层,至少要包括flash的init,read、write、erase这些操作。但每更换一个单片机或者flash器件就要额外去编写flash驱动去适配init,read、write、erase。尽管有会者不难的属性加持,但适配所有的单片机或者flash器件,工作量也可想而知。
AIoT-KK
2023/03/01
2.5K1
利用MDK的FLM文件制作通用flash驱动
嵌入式 C 语言(中)
volatile原意是“易变的”,在嵌入式环境中用volatile关键字声明的变量,在每次对其值进行引用的时候都会从原始地址取值。由于该值“易变”的特性所以,针对其的任何赋值或者获取值操作都会被执行(而不会被优化)。由于这个特性,所以该关键字在嵌入式编译环境中经常用来消除编译器的优化,可以分为以下三种情景:
韦东山
2022/05/05
1.5K0
嵌入式 C 语言(中)
C语言高效编程与代码优化
在本篇文章中,我收集了很多经验和方法。应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码。
C语言与CPP编程
2020/10/20
3.4K0
C语言不完全类型是什么?有什么用途?
ISO(国际标准化组织(International Standard Organization))将C语言分为三个不同类型集合: 函数类型、对象类型和不完全类型,具体说明如下所示:
不脱发的程序猿
2021/06/21
1.3K0
C语言不完全类型是什么?有什么用途?
全志R128 SDK HAL 模块开发指南之 UART
Universal Asynchronous Receiver/Transmitter,通用异步收发传输器
阿志小管家
2024/04/25
1580
NDK--andfix热修复之art虚拟机
在so插件化原理,hook技术实现andfix热修复中,只实现了dalvik虚拟机中的热修复,安卓5.0后,谷歌彻底抛弃dalvik虚拟机,改用art虚拟机。 在dalvik虚拟机中,应用启动首先会加载dex成class字节码,然后采用JIT技术,字节码都需要通过即时编译器(just in time ,JIT)转换为机器码(CPU真正识别二进制),虽然转换时会利用缓存技术优化,但还是会造成应用运行速度。 在art虚拟机中,在应用安装时,就通过dex2oat工具把dex文件转换为oat文件,oat文件中同时存
aruba
2020/07/03
6050
推荐阅读
相关推荐
超全 | 只有高手才知道的C语言高效编程与代码优化方法(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档