为什么基于java的编辑器通常会变慢,因为据说在预热阶段之后java会很快?

rog*_*ack 20 java performance editor

好吧,我知道大多数人都说"这些日子java速度不慢,只是启动阶段很慢",但没有人能看到我的眼睛并且告诉我使用netbeans或eclipse或jedit就像说的那样响应,视觉工作室或文字,即使经过几个小时的"热身"时间.哦,启动时间肯定是一个问题(咳嗽日食)我会承认,但我在这里谈论一般的反应.例如,当您调整窗口大小时,Jedit会有一个明显的滞后.

我认为,合理的苹果与苹果的比较将是jedit(或任何基于Java的文本编辑器)与TextMate,SciTE.

它真正归结为的问题是"如果netbeans/eclipse完全用C语言重写,具有相同的功能集,你会期望它具有与目前相同的性能特征."

有任何想法吗?

还有一些观察:

这个简单的基于回转的编辑器[1]在调整窗口大小时有很奇怪的滞后,但滚动感觉非常敏感.此外,使用netbeans,当你开始调整大小时,直到你"停止"调整窗口的大小,它会画出一个丑陋的黑色背景[4].也许swing在窗口被拖动时拒绝刷新?

这是一个简单的swt简单文本编辑器[2].它对拖动和滚动都非常敏感.

这是另一个简单的(jface)swt编辑器[3].它调整得很糟糕我认为它一定是一个糟糕的侥幸.我希望.

我还注意到记事本和视觉工作室在刷新时往往会显示临时白色"blips"(例如:当通过非常长的文档使用页面时).swt和swing应用程序似乎没有那些额外的白色blip,所以我想知道他们是否有一些额外的内部缓冲或其他东西.这可能导致小幅放缓,明智

[5]是一个相关但不完全相同的问题.

我目前的猜测,基于现有的答案/评论:

  • Netbeans刚刚变得臃肿.也许有一些关于编辑java的东西让编辑器创建者过分了?也许他们出于某种原因没有优化他们的编辑器?
  • Java编辑器使用大量的RAM可能会使事情远离L2缓存?
  • Java编辑器中编辑Java,所以也许他们必须继续不断地呼唤,说,javac的,其每次唱完即被启动慢的处罚一次?
  • SWT是原生小部件的抽象层,可能会减慢速度.
  • Swing有一个糟糕的调整大小刷新策略,这使它"显得"缓慢.
  • Netbeans使用客户端虚拟机,所以可能只是没有调整速度?(见[6]它包含一个答案是参数的转换,你可以通过使用NetBeans,试图加快它链接到另外一个问题).
  • 在滚动期间,Swing/SWT似乎比本机Windows应用程序具有更少的工件.也许这意味着他们有缓冲"助手"来帮助避免伪影,导致感知缓慢,因为它不会立即刷新.
  • 也许Java没有巨石基准,所以也许它没有针对那种类型的负载进行优化?也许存在一些隐藏的低效率.
  • 相关地,也许java可以"变得"快,但不知何故,编辑创建者没有有效地使用它("核心库将节省我速度!").
  • 也许它只是"感觉"慢,因为(至少netbeans)必须经常调用新的java实例来运行调试器等,每个实例都需要自己的慢启动时间.

谢谢!-roger-

[1] http://www.picksourcecode.com/articles/explan.php?id=6c9882bbac1c7093bd25041881277658&ems=9a0fa83125d48ab7258eab27754dd23e&lg=10

[2] https://gist.github.com/972234

[3] http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/BasicEditor.htm编译/运行它像java -cp.; swt\win32.jar; jface/*BasicEditor

[4] http://twitpic.com/4xi8ov

[5] Java真的很慢吗?

[6] 有没有办法使netbeans使用热点服务器vm

Edw*_*uck 8

要做所有"动态"代码语法检查和突出显示,你基本上必须编写你的编辑器来理解(这意味着lex,解析,类型检查,语法验证等)java语言并验证文本的内容在你开始几乎空的课程和完成你的程序之间的每个中间状态编辑器.

另外,对于交叉引用完整性,您必须保留有关内存中所有其他类的足够信息,这样您才能确保在对象上调用方法时,它确实存在于该"其他"对象上.

这并不是说所有其他项目被索引的地方,等等.

简而言之,它很慢,因为它做了很多,即使它所做的所有事情都没有被一个只关心屏幕上的字母的人(而不是IDE的所有功能)立即感激.

  • 您是否真的可以指向一个像Java或Netbeans一样功能强大的IDE,而不是Java?即使VisualStudio也无法跟上所有可用功能(或无穷无尽的扩展能力).为了善良,人们甚至扩展/替换IDE组件以快速传递胖客户端应用程序. (6认同)
  • 您已经回答了为什么特定语言的IDE速度慢的原因,而不是为什么用Java编写的IDE很慢.我不认为OP特别是谈论IDE或Java编辑器,只是用Java编写的编辑器.我有一段时间没有使用过jEdit,但即使只是编辑原始文本,它似乎也没那么敏感. (4认同)
  • 人们如何对这个答案投票有用?它完全错过了这个问题! (2认同)