PhoneMe Advanced 浅度探索四----性能

Unreal 5与MetaHuman数字人全流程实战:从创建到实时驱动 数字人技术是虚拟现实与元宇宙领域的核心,其本质是通过计算机图形学与实时渲染技术,创建并驱动高保真3D角色。其原理涉及模型构建、骨骼绑定、动画系统和实时渲染管线,通过插件生态整合面部捕捉、语音驱动等模块,实现角色的动态表现。这项技术的价值在于极大降低了高质量数字角色的创作门槛,提升了动画资产的复用率与生产效率,使其在虚拟制片、实时直播、AI助手和游戏开发等场景中得以广泛应用。本文聚焦于Unreal Engine 5与MetaHuman框架,深入解析如何利用其强大的插件生态,例如Live Link Face和O 阅读详情

 Mark Lam has been a virtual machine engineer in the JavaME CDC team at Sun Microsystems for over 6 years. Before joining Sun, he was a real-time embedded systems developer for 6+ years, working on application frameworks, graphics systems, networking protocols, game development, and fault tolerant systems amongst other things, on devices ranging from 64KB 8bit uControllers to 32-bit RISC machines.


原文URL:http://weblogs.java.net/blog/mlam/archive/2006/11/performance_how.html#more


性能:太多的好事?
               这篇文章需要开发者有PhoneMe Advanced VM和J2ME方面比较深奥的知识。
              如果你已经看过了phoneMe Advanced VM的代码,你可能已经注意到许多函数和结构都是以cvm为前缀的。CVM是sun公司CDC VM的名称,而cvm作为前缀是VM代码(特别是全局函数和结构)的标准习惯。这是所有使用sun公司CDC技术工作过的人的普遍常识,但在这里我还是要强调一下。另外,我简单的以CVM来代替phoneMe Advanced VM。
现在让我们开始今天的主题。。。
性能
           通常,没有用户会抱怨,当他们的软件有很好的性能。无论如何,性能伴随着价格。通常,这意味着复杂的代码和更好的硬件。这还意味着需要更多的内存来运行软件。对JavaME VM来说,它的目标是资源受限的嵌入式设备。这是一个明确的关系。因此,一些性能上的工作需要合理的代价。这意味这平台开发者不能做所有他们知道的书本上的优化方法。
          这样说,我希望你知道我没有说这些是因为CVM的性能是窘迫的。直到我们吃的,CVM是这个领域最快的虚拟机,如果不是最快的,给你一个关于CVM性能的想法。几年前,我们把CVM同JavaSE1.3的基于SPEC JVM98子集的client VM进行了比较。我们使用子集是因为SPEC JVM98使用了已经从CDC移出的不受赞成的API。因此,我们做了一些内部“移植”对这个比较。这个比较在PowerPC,PowerMac和Solaris SPARC机器上进行。同JavaSE比,CVM显示了80%~90%的性能,只有10%的静态footprint。你应该知道这是老的数据。JavaSE已经有了很大的提高,CVM也是。注意:我仅仅是共享这些比较而给你一个JavaME能达到的性能等级的概念,我没有说任何关于哪一个VM更好。
         因此,当我们谈论性能的时候,人们首先谈论的VM的一个组成是动态适应编译。而作为JIT,下面我会围绕比较谈关于一些性能的事。我会接触其他非JIT相关但又重要的领域或主题
静态编译 VS 运行时编译
           一个最大的错误是,工程师会在JIT开始执行从其他编译课本来的优化而不做太多考虑。这些优化技术中的一些是意味深长的,而一些不是。有一点,课本经常教的是静态编译。JIT,在其他方面,是动态编译。这是JavaME的资源受限请求的要素。你可以在它们的属性中找到对比。下面是2中技术的比较:
Static compiler                                                                       JavaME JIT compiler
能提供少量内存给编译工作                                                   必须最小化或限制使用的工作内存
能够提供更多的时间和CPU周期给编译工作                      必须最小化或限制CPU的消耗
假设所有的方法在编译时都是可用的                                   只能工作与一个子集
编译所有的方法                                                                       只编译正在使用的方法。
必须编译所有类型的代码                                                   只需用编译通用的类型,让解释器处理那些不常见的实例
             注意,很多静态编译都假定更多内存和CPU资源的可用性。因此,他们的编译技术有很多相似的假定。明显的,这些技术的一部分不适用于JavaME。
                注意,尽管java平台是一个动态环境,可以期望部分代码在运行时下载。后期绑定是Java VM和语言的特点。 这不匹配静态编译的假定:整个应用程序代码必须在编译期可用。
JIT的能力让解释器处理不常用的案例的执行,同样也减少非紧急代码在资源上的消耗(在编译代码和编译footprint)
             批评家会说在我上面基于广泛性的表格里的需求,在今天的编译技术水平下不是真的。为什么,对的,我同意。我假设静态编译也来源静态链接。但记住,你的编译课本可以没有包括这2个中的任一个。我也使用静态编译的严格定义。例如:我认为它是编译静态代码。
真实世界的执行会加入一些能力,包括动态代码(可以下载),但这些不是严格的静态编译。这里的要点是你不必盲目的应用一流的编译技术。这些技术常常对不同的系统(这对类似于java的平台)做目标和最优化,因此他们可能不适合这里。
            人们可能有这样的误解,通过静态编译的代码要运行的比实时编译的要快。这不是全对的,实时编译的代码能够超越静态编译的代码。一个关键的原因是,java平台是动态并且后期绑定的。我会在以后详细的讨论这个。
           因此,有很多的原因导致静态编译不适用,甚至当你关心的资源和性能受限大打折扣。
JavaSE Hotspot VS CVM
        因此我们不能从编译器课本挖掘出诀窍。那从JavaSE VM可以得到诀窍吗?回答是“可能”。首先,这是资源受限的问题。JavaSE已经和有许多资源的大系统匹配了。这完全是合理的和可接受的,他们使用这些资源给你最好的性能在你的话费下。但当这些资源在你的设备上不可用时,这些技术可能就不能用了。
            另一点对普通开发者来说不是那些显而易见,JavaME 执行(像CVM)不仅仅是JavaSE的小版本。JavaSE目标设备的类型和JavaME有很大差别。CVM不是因为比JavaSE Hotspot少了一些功能而变小,CVM体系被设计的它可以工作在不同的嵌入式设备上。在它设计上的每一级,不同的选择会导致速度-空间的权衡。由于这个原因,用在JavaSE里的技术可能不能应用在CVM里,因为它们有不同的权衡。
                 给你一些例子来说明JavaME设备和JavaSE的不同,一段时候前,我的一个JavaSE方面的同事发现了当他应用一个可靠的技术来改善高速缓存位置,基于一个基准他能得到20%性能的提升。这抓住了我的注意。20%是不容忽视的,因此,我应用这个技术到CVM。令我吃惊的是,基于同样的基准,性能下降了70%,发生了什么?不同的是,JavaSE运行在一个有大量高速缓存(上百KB甚至是几兆)的服务器上。而我运行在只有32KB高速缓存的基于ARM处理器的设备上。这个改良的高速缓存位置在这儿制造了一个冲突。
 这个有效提升JavaSE的技术相对CVM来说,这也不是一个精确的例子。在这个例子里,他可以解决。但如果最优化代码,这项JavaSE技术可用于那些有着巨大缓存的设备?把这个技术应用在CVM实际上会造成那些没有大量高速缓存的JavaME设备性能的大幅下降。
              因此,关键是我们不要盲目的应用从JavaSE来的任何重要技术。注意上面的例子也说明了JavaSE VM运行的不比CVM快,当它运行在JavaME设备上时,即便你有大量的RAM(不是系统高速缓存)。这就像你想要你的汽车使用火箭引擎而有更大的马力。这听起来是一个不错的主意,但你的燃料系统不能支持它。结果也不比一般的汽车快。什么也没有改变。
              JavaME不仅仅是JavaSE的缩小版。对比JavaSE和JavaME就像对比苹果和橙子。
 基准
                 最后,确定优化是否工作的最好方法就是实验。 我们经常自己做这些事情。当一个念头失败,我们不混合基本代码。检测优化是否联合的一个重要的标准是,花费了多少成本在小组的资源分配上。另外,它带给了你多少性能的提升。
                 测量性能的提升,你需要运行某个类别的基准。一个常见的错误是人们运行了一个小的基准仅仅在测试一个优化提升的范围。真实世界的应用程序可能不只参加了一个循环和一个代码范围。因此,基于真实世界应用程序的基准是一个可靠的指示。对JavaMe来说,我们喜欢SPEC JVM98,但像前面说的,它不能不修改那些不赞成的方法而运行在CDC上。另外我们还喜欢EEMBC的GrinderBench。
               如果可能,运行你的基准在JavaME类型的设备上。就像上面指出的,JavaME不同于JavaSE,你改变在JavaSE类型的桌面或服务机器的的基准将给你指示,改变的结果是否有增长。但不同的JavaME设备,你得到的结果不完全一样,需要有适当的工程判断。
另外的性能
                一般的,java平台的性能不仅仅指执行引擎(解释器,JIT)。VM运行时和类库的品质也是游戏的一大部分。有些时候,它们甚至比VM重要。这包括主要依靠本地代码(相对于java代码)的graphics/GUI应用程序。无论如何,这不是意味着他们不依靠VM来运行。严格来说,VM运行时库是VM实现的一部分,我们也需要优化它。
                VM也能提供帮助机制使类库能执行的更好。他们需要共同工作。
               最后,有一件关于本地代码的事情。一些人认为他们的代码会执行的更快如果他们主要代码都是本地代码。这确实是个谬论,因为一系列的原因,使用本地代码确实会造成性能的下降比起一些功能使用java字节码。
               所有的这些都会在后面讨论。
这对你意味着什么
           性能是个复杂的主题。我们在这里仅仅是触及到了它的表面。正如我上面想要指出的,事情不是总想它们看起来的样子。当试着对JavaME系统执行性能提高的工作,对于嵌入式系统开发者来说,谨慎的思考是必要的。每一种优化技术需要在这个地方个别的进行评估。


文章出处:DIY部落(http://www.diybl.com/course/3_program/java/javajs/20090303/157497.html)

视觉特征-自监督-掩码特征预测【2024-10】:D-JEPA【生成模型:下一Token组自回归预测(组内并行去噪),自回归合成图像】【JEPA、Diffusion损失均针对Mask处Token计算】 Dengsheng Chen1 Jie Hu2 Xiaoming Wei1 Enhua Wu2∗1Meituan 2Key Laboratory of System Software (Chinese Academy of Sciences) and State Key Laboratory of Computer Science, Institute of Software, Chinese Academy of Sciences {chendengsheng, weixiaoming}@meituan. 阅读详情

相关推荐

phoneME-GP2X-SDL-build

GP2X-SDL版本的phoneME的构建自动化 先决条件: 的Python 3 pip install pexpect qemu-system-i386 ssh sshpass 工具版本: Debian 5.0.10 gcc 3.4.6 SDL 1.2.15 SDL_image 1.2.12 SDL_mixer 1.2.12 JDK 1.4.2_19

移植java虚拟机到EM2440开发板

因为是客户的要求,需要移植Java虚拟机到

weixianya的专栏 1350

phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip

phoneme_advanced-mr2交叉编译,CVM移植ARM交叉编译

PhoneMe 浅度探索 一 (PhoneME Advanced 目录结构)

The article translate from Darryl Moceks blog. Darryl Mocek is a staff engineer for sun microsystems,Inc. currently working on J2ME CDC and related techonlogies. the URL is : http://weblogs.java.net/

vrix的专栏 1153

【低空经济】无人机充电站设计方案

随着无人机技术的快速发展和广泛应用,其在物流、农业、巡检、救援等领域的应用日益普及。然而,无人机的续航能力一直是限制其大规模应用的关键因素之一。为了解决这一问题,无人机充电站的设计与建设显得尤为重要。本项目旨在设计一套高效、智能、可扩展的无人机充电站系统,以满足不同场景下无人机的充电需求,提升其作业效率和应用范围。无人机充电站的设计将围绕以下几个核心目标展开:首先,充电站应具备快速充电能力,以减少无人机的停机时间,提高作业效率;

2960

MatGPT:在MATLAB中集成AI助手,实现代码生成与调试自动化

大语言模型(LLM)通过API接口为开发者提供了强大的自然语言理解和代码生成能力,其核心原理是基于海量数据训练的Transformer架构,能够根据上下文预测并生成连贯的文本或代码。这一技术为工程实践带来了革命性价值,特别是在科学计算和算法开发领域,能够显著提升开发效率,实现智能化的代码辅助和问题解答。在实际应用中,开发者常需在IDE与AI工具间频繁切换,导致工作流中断。MatGPT作为一个开源项目,通过深度集成ChatGPT API到MATLAB环境,有效解决了这一痛点。它支持多模态输入、预设提示词管理和

weixin_42388898的博客 502

phoneMe的编译过程,基于win32平台

                                                phoneME Feature Software MR2 简介和编译                             phoneME分为phoneME Feature Software和phoneME Advanced Software两个子项目,分别对应了CLDC和CDC的实现。 phonem

chenzhp的专栏 2192

ros2 humble cartographer 2D激光雷达建图

Cartographer是一个支持多平台和传感器配置的SLAM的系统。 本文主要讲述在ros2 humble系统上cartographer的安装方法,以及如何配置参数实现自己的ros2 bag包的离线建图。

weixin_43087302的博客 6939

PhoneMe Advanced 浅度探索三----虚拟机内部

 Mark Lam has been a virtual machine engineer in the JavaME CDC team at Sun Microsystems for over 6 years. Before joining Sun, he was a real-time embedded systems developer for 6+ years, working on ap

91program 的流水空间 1900

AI 生成 CAN 通信测试用例实战

本文分享了AI辅助汽车电子测试用例编写的实战经验。通过某车企CAN网络测试项目案例,对比传统方式(需27天)与AI辅助方式(仅5天)的效率差异,展示81%的效率提升。文章详细介绍了从DBC文件提取信号信息的方法,包括DBC文件结构解析、信号定义说明,并提供了完整的Python解析脚本代码,可将信号信息导出为JSON或Excel格式,为后续AI批量生成测试用例奠定基础。

小明的博客 695

双目相机标定理论与编程实现

双目相机标定是计算机视觉中的重要任务,通过确定双目相机的内参和外参,可以实现立体视觉的深度感知和三维重建。通过使用OpenCV库提供的函数,我们可以方便地进行双目相机的标定工作。双目相机标定是计算机视觉中的重要任务,用于确定双目相机的内参和外参,以实现立体视觉的深度感知和三维重建。通过上述代码,我们可以获得左右相机的内参矩阵、畸变系数、旋转矩阵和平移矩阵等参数,从而完成双目相机的标定过程。使用双目相机采集一系列左右相机的图像,确保标定板在不同位置和角度下都能被双目相机拍摄到。函数来检测标定板的角点。

ByteKnight的博客 325

PhoneME: Open Source J2ME VM_拔剑-浆糊的传说_新浪博客

Open Source J2ME VM PhoneME from SUN: How to build PhoneME http://wiki.java.net/bin/view/Mobileandembedded/PhoneMEAdvancedBuildInstructions http://wiki.java.net/bin...

拔剑—浆糊的传说 159

39、高频 LLC 谐振转换控制系统动态优化算法分析与研究

本文针对高频下LLC谐振转换器动态性能差的问题,提出一种基于谐振电容器充放电估计动态切换时间的优化控制算法。通过改进状态轨迹控制方法,突破传统算法在谐振频率与开关频率相等条件下的限制,并结合新型采样策略有效抑制电压过冲。算法在MATLAB和SABER中完成仿真验证,并搭建基于STM32F407的原型系统进行测试,结果表明该方法显著缩短动态响应时间,提升系统稳定性。研究为高频、高功率密度开关电源的动态优化提供了可行解决方案。

linux6sysadmin的博客 112

PhoneMe Advanced 浅度探索六----C特性和CVM

 Mark Lam has been a virtual machine engineer in the JavaME CDC team at Sun Microsystems for over 6 years. Before joining Sun, he was a real-time embedded systems developer for 6+ years, working on

91program 的流水空间 2190

Linux内存管理(17):percpu 分配器——基本原理

随着 SMP(对称多处理器架构)的发展,在享受处理器更快的执行效率的同时,也为数据同步带来了更大的挑战,因为在 SMP 架构中,程序确实是在并发执行,从单 CPU 只需要考虑调度风险,到SMP 中还需要考虑多 CPU 中同时执行的风险,而且在单 CPU 下乱序执行也会在 SMP 架构中带来,从而也衍生了一些新的同步机制,例如:内存屏障、percpu 机制等等。

私房菜 1250

Java代码实现opc ua 事件订阅和数据变化订阅

OPC UA (Open Platform Communications Unified Architecture) 提供了两种主要的订阅机制:数据变化订阅(Data Change Subscription)和事件订阅(Event Subscription)。这两种订阅机制允许客户端实时接收来自服务器的数据更新或事件通知。

洛阳泰山的博客 2370

PhoneMe Advanced 浅度探索五----JavaSE or JavaME

 Mark Lam has been a virtual machine engineer in the JavaME CDC team at Sun Microsystems for over 6 years. Before joining Sun, he was a real-time embedded systems developer for 6+ years, working on ap

91program 的流水空间 2073

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

探索DiffSinger:颠覆性扩散模型歌声合成一站式解决方案

你是否曾想过,AI歌声合成技术如何从简单的语音合成进化到能够表达丰富情感的智能歌唱系统?今天,让我们一起深入探索**DiffSinger歌声合成**技术,这个基于扩散模型的革命性解决方案如何重新定义了AI音乐创作的可能性。DiffSinger不仅是一个开源项目,更是一个完整的**高质量歌声生成**生态系统,为开发者提供了从数据准备到生产部署的全链路支持。 ## 扩散模型:为什么它成为歌声合成的理

gitblog_00995的博客 685

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

DiffSinger技术解析:如何用扩散模型解决AI歌声合成的三大难题

你是否曾困惑于传统AI歌声合成系统音质生硬、缺乏表现力的问题?DiffSinger作为基于扩散模型的歌声合成框架,正在重新定义高质量AI歌声生成的标准。这个开源项目通过创新的浅层扩散机制,为开发者提供了前所未有的控制能力和音质表现。 ## 传统歌声合成的三大痛点与DiffSinger的突破 **音质生硬、缺乏自然感**是传统系统的首要问题。传统方法通常采用声学模型+声码器的两阶段架构,每个阶段

gitblog_00935的博客 256

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

创新扩散模型歌声合成:DiffSinger的深度实战指南

在AI音乐创作领域,**DiffSinger歌声合成**技术正引领着一场声音生成的革命性变革。这个基于扩散模型的开源系统,通过创新的浅层扩散机制,为开发者提供了高质量、可控性强的歌声合成解决方案。想象一下,AI能够像专业歌手一样,根据乐谱和歌词精准控制音高、音色和情感表达——这正是DiffSinger带来的技术突破。 ## 从传统到革新:为什么选择扩散模型? 传统的歌声合成系统就像是制作一道复

gitblog_00541的博客 255

arm9 安装java_移植java虚拟机到FriendlyArm Mini2440

管理提醒:本帖被 xoom 执行加亮操作(2011-10-23)一、选用sun的phonemehttps://phoneme.dev.java.net/二、下载http://download.java.net/mobileembedded/phoneme/advanced/phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip三、解压unzip phone...

weixin_31476341的博客 379

CVM栈和代码的执行

原文链接:http://weblogs.java.net/blog/2006/11/30/cvm-stacks-and-code-execution CVM栈和代码的执行欢迎来继续讨论phoneME Advanced VM(CVM)的内部结构。如果你错误过了我们之前的讨论,就先从

文山的专栏 1360

总结win7平台的dep机制-由phoneme jit功能异常说起

最近在编译j2me的开源

Changju博客 1757

phoneME Advanced CDC目标平台需求

phoneME Advanced CDC目标平台需求本章描述了phoneME advanced build system建立tool所需的目标设备。1、普通目标设备特征phoneME Advanced技术的目标设备通常称为资源受限的设备。下表描述了这些目标设备的注意特征:——————————————————————————————种类                              

chszs的专栏 3486

stm32 移植java虚拟机_移植Java虚拟机到mini2440

三、解压unzip phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip四、修改makefilecd phoneme_advanced_mr2/cdc/build/linux-arm-genericgedit GNUmakefile修改 CVM_TARGET_TOOLS_PREFIX=/usr/local/arm/4.3.2/bin/arm-linux-...

weixin_36048947的博客 602

移植java虚拟机CVM到ARM平台

J2ME CDC(Connected Device Configuration,连接式设备配置集)使用CVM,面向那些具有更强计算能力的嵌入式设备,包含了Java类库的核心部分,是应用Java技术在嵌入式设备上进行开发所需类库的最小集合。它具有如下优点:高级网络特性:CDC位基于套接字的网络编程技术提供了最新Java API满足Jini技术的需求:基于CDC远程方法调用(RMI)可选包可实现对基于...

smmi的专栏 471
上一篇: PhoneMe Advanced 浅度探索五----JavaSE or JavaME
下一篇: PhoneMe Advanced 浅度探索三----虚拟机内部
普通网友
普通网友 领域专家: 编程技术技术领域 领域专家: 编程技术技术领域
博客等级 码龄25年 2837粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值