首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java Path2D性能问题

Java Path2D性能问题
EN

Stack Overflow用户
提问于 2014-06-30 19:35:07
回答 1查看 475关注 0票数 1

我有一个程序,利用Path2D.Float来绘制一个矢量对象(一个大的分形设计)。我的代码允许缩放和平移。我有一个axis对象,它具有根据当前缩放设置(存储在axis对象中)将世界坐标(双精度对)转换为显示坐标(浮点数对)的方法。

无论如何,矢量图形是大而详细的,并且包含世界坐标中的许多线段。用户每次缩放或平移时,都会创建新的Path2D对象并渲染到屏幕上。

缩小后,一切都非常平滑。当我放大到某个深度时,问题就出现了。显然,Path2D行变得很长,这会减慢它们的渲染速度(即使绝大多数都在查看区域之外!)。消耗资源的不是我的转换算法。我对它进行了分析,与较小的裁剪区域相比,由于线条的大小,Java图形绘制算法确实变慢了。

我希望有一种方法可以让Java自动处理大行的裁剪。在绘图之前,我确实从图形对象调用了setClip()。我不明白是什么花了这么多时间。与裁剪矩形相比,当线条较长时,裁剪算法是否存在问题/效率低下?我不认为我缩放得太远,以至于我从世界坐标到显示坐标的转换会导致溢出。我得去看看这个。如果是这样的话,我将尝试使用Path2D.double。

无论如何,感谢您的帮助。我相信我最终会解决这个问题,但我希望遇到同样问题的人能给我一个指针,这样它就不会花太长时间来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-06-30 19:48:35

我没有在缩放时使用路径,但我使用它们来绘制一些带有纹理和梯度等的非常复杂的形状。我有一些问题:

在我的经验中,我不得不避免在每个帧的基础上创建新的Path2D对象,因为性能问题,不仅是为了它们的重新执行,而且因为它导致了大量的垃圾回收,然后如此迅速地生成和删除许多垃圾收集,这减慢了速度。如果您的形状没有更改,请缓存生成的路径。

避免使用路径裁剪-如果可能的话,坚持使用矩形-路径似乎在曲线上提供粗糙的边缘,并且使用成本更高。

即使裁剪到较小的区域,简单地要求绘制较大的区域也可能会减慢速度。考虑用户何时放大以细分形状,即形状仅与视口大小相同。也许正如你所说,在处理大体积区域时,裁剪功能可能存在问题,因此镶嵌可能会在这里有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24497631

复制
相关文章
Ubuntu循环登录libGL error: fbConfigs swrast等
Ubuntu16.04更新NVIDIA驱动后,无法进入桌面,使用vim .xsession-errors
zhangrelay
2019/01/23
2.4K0
错误: 找不到或无法加载主类(java)
很多刚学java的同学基本上都遇到过这个问题,刚才我刚了一下idea中入口雷类的包的地址,就出现这个了。原因很简单,在此特做记录,希望能帮助到点开这个文章,遇到错误的你。
手撕代码八百里
2020/07/28
5.2K0
Linux系统命令找不到了,只能重装系统?
运维时间长了,总会遇到各种难搞的问题,虽然说Linux不像windows server那样容易出蓝屏,无法启动之类的系统问题,但也不是不会出现系统层面的故障,比如今天在群里有小伙伴遇到的
李俊鹏
2021/05/27
4.9K0
IDEA 出现错误:找不到或无法加载主类
解决方法: idea本身缓存问题 解决:清理缓存重启IDEA file-->invalidate Cache/restart 解决方法二: 在这里设置自己的java文件的目录位置
孙晨c
2019/09/10
6.8K1
IDEA 出现错误:找不到或无法加载主类
idea 错误:找不到或无法加载主类 解决
问题出现的很莫名其妙,, 在项目的PATH 中,将path修改为跟当前项目在一个路径下就可以了
MickyInvQ
2020/09/27
12.8K0
idea 错误:找不到或无法加载主类 解决
解决问题使用pytesseract出现错误:“[WinError 2] 系统找不到指定的文件
在使用pytesseract的过程中,有时候会遇到“[WinError 2] 系统找不到指定的文件”这个错误。这个错误通常是由于tesseract路径配置不正确导致的。下面是解决此问题的步骤:
大盘鸡拌面
2023/11/24
1.3K0
Java提示错误: 找不到或无法加载主类
检查java在Idea终端中是否可用,如不可用,编辑编译器输出路径:文件→项目结构→模块→路径→输出目录 或 设置→工具→终端→项目设置→环境变量
无刺鱼
2022/03/29
2.2K0
系统错误&H80004005(-2147467259),未指定的错误。[通俗易懂]
可能产生错误的原因: 1.Flash的不断更新升级导致。 2. 较新版本中的Microsoft Office 中阻止了 Flash、Silverlight 和 Shockwave 控件。
全栈程序员站长
2022/09/14
3.4K0
系统错误&H80004005(-2147467259),未指定的错误。[通俗易懂]
Maven 错误找不到符号
当碰到maven错误:找不到符号问题时,通常第一反应应该是执行eclipse的Project -> Clean … -> Clean all projects,然后再执行maven clean,将项目清理一下,然后再试试,如果还是不能解决接着往下看。
我是李超人
2020/08/20
7.5K0
[Spring cloud 一步步实现广告系统] 21. 系统错误汇总
因为Eureka在集群启动过程中,会连接集群中其他的机器进行数据同步,在这个过程中,如果别的服务还没有启动完成,就会出现Connection refused: connecterror,当其他节点启动完成之后,报错就会消失。
Isaac Zhang
2019/08/22
7060
[Spring cloud 一步步实现广告系统] 21. 系统错误汇总
解决 Connection Refused: 系统错误
在开发与运维工作中,Connection Refused 是一个常见的错误提示,通常表示无法成功连接目标服务。 本篇博客将详细讲解这一问题的原因、排查方法及解决方案,并附上代码示例,帮助小白用户快速掌握处理思路。如果你也遇到类似问题,不妨跟随本文一起深入学习,彻底解决问题!
默 语
2024/12/24
1.1K0
解决 Connection Refused: 系统错误
IDEA——错误: 找不到或无法加载主类 com.Main
昨天在使用IDEA创建了一个普通Java项目,执行main()方法时,程序报错如下:  “错误: 找不到或无法加载主类 com.Main Process finished with exit code 1”,  我确信自己的java jdk安装和环境变量配置(java jdk安装和环境变量配置)正确无误,而程序只是一个再简单不过的打印而已:
业余草
2019/03/16
54.1K0
SELinux/AppArmor 配置问题:SELinux 或 AppArmor 配置错误,影响系统安全
定期检查和更新 SELinux 和 AppArmor 的策略是非常重要的,以确保系统始终处于最佳的安全状态。
是山河呀
2025/02/06
1470
golang简单设计错误系统
go大量地使用错误,但错误系统一直饱受诟病,早期errors包中只有一个光秃秃的New方法,使得很多著名的项目如GRPC也只能使用偏门方法处理错误。
超级大猪
2024/06/19
970
错误排查-系统启动篇
Linux 启动与登录问题是 ECS 的高频问题,而往往处理不及时会直接影响到 用户业务的正常可持续运行,因此也变成了我们处理问题优先级的重中之重。在云环境上影响 ECS 启动与登录的因素非常多,镜像、管控、虚拟化、底层 硬件、系统与文件异常等等,本文仅从系统与文件本身角度,在大量处理经验 的基础上,归纳总结了一些可能会引起系统启动与登录问题的排查点,并给出 几个比较常见的典型案例来具体展示和说明。
用户8639654
2021/08/04
7720
解决PyTorch中的`CUDA out of memory`错误
大家好,我是默语,擅长全栈开发、运维和人工智能技术。今天我们将深入探讨如何解决PyTorch中常见的CUDA out of memory错误。这个问题在处理大规模深度学习模型时经常出现,理解并解决它对于提升模型训练效率至关重要。关键词:PyTorch、CUDA、内存不足、深度学习、错误解决。
默 语
2024/11/22
1.3K0
如何优雅做系统错误提示?
不知道你有没有过这样的感受,当你使用软件遇到异常的时候,有时候软件给出的错误提示让人摸不着头脑。唯一的办法就是复制到搜索引擎搜一下,看看有没有哪个不幸的人与我遇到一样的问题。
Zachary_ZF
2020/07/21
1.9K0
系统语言问题:系统语言设置错误,影响使用
是山河呀
2025/02/08
1630
Python错误:“数据库引擎找不到输入表或查询”的一种可能情况
可能的原因是:表的快捷方式被重新命名了,而我们使用了快捷方式重命名后的名字,而不是本来的名字。
黑马Amos
2023/03/21
1K0
Python错误:“数据库引擎找不到输入表或查询”的一种可能情况
1.2 cuda相关常见错误记录
并提示cudnn版本不对,需要更新cudnn的版本.例如tensorflow1.11版则需要cudnn7.21以后的版本.下载了7.3.0的版本并覆盖源文件,就好了. 可以需要重复1.中的步骤来重新建立软连接.
锦小年
2019/05/28
1.1K0

相似问题

通过virtualGL运行玻璃齿轮时的分割故障

10

错误:引导系统时找不到linux命令

10

码头CentOS系统

10

更新错误和返回系统错误

10

系统日志中的错误

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档