Java 提高图像应用程序性能

Java 提高图像应用程序性能,java,javax.imageio,Java,Javax.imageio,我有一个JavaSE6应用程序,它接收10到15个BuffereImage 应用程序必须将这些BuffereImage写入共享内存,以便C程序读取并显示这些图像 问题是图像很大,从1900*1600到800*600,用ImageIO转换字节[]需要很长时间:最大的图像需要50毫秒。我需要这个字节[]写入内存,ImageIo是我找到的最快的方式 如果我有4个大图像,刷新图像需要50*4=200毫秒: 你知道我该如何改进它吗? 我应该关心一个线程中的一个图像吗?我将有15个线程,cpu已经在60%左

我有一个JavaSE6应用程序,它接收10到15个BuffereImage

应用程序必须将这些BuffereImage写入共享内存,以便C程序读取并显示这些图像

问题是图像很大,从1900*1600到800*600,用ImageIO转换字节[]需要很长时间:最大的图像需要50毫秒。我需要这个字节[]写入内存,ImageIo是我找到的最快的方式

如果我有4个大图像,刷新图像需要50*4=200毫秒:

你知道我该如何改进它吗?
我应该关心一个线程中的一个图像吗?我将有15个线程,cpu已经在60%左右工作,而不是使用imageio写入图像。你试过了吗。 imageio将数据写入特定的编解码器,如TIFF/MJPEG。 你需要的是像素的实际数据。 现在需要编写C代码才能渲染像素。
您计划如何将数据传递给C代码?指针???

而不是使用imageio写入图像。你试过了吗。 imageio将数据写入特定的编解码器,如TIFF/MJPEG。 你需要的是像素的实际数据。 现在需要编写C代码才能渲染像素。
您计划如何将数据传递给C代码?指针???

以下是我运行的基准测试的反馈: resumse:似乎ImageIO是图像处理方面最优化的类

进程:BuffereImage=>byte[]=>byte[]=>int[]=>write 注意:使用ImageIO转换字节为[]的图像

图像1900*1600 从BuffereImage获取字节[]:45毫秒 强制转换字节[]en字节[]:0毫秒 在内存中写入:4~9毫秒

图像1280*1024 从BuffereImage中获取一个字节[]:20?23毫秒 强制转换字节[]en字节[]:0毫秒 在内存中写入:4*7毫秒

图像800*600 从BuffereImage获取字节[]:9毫秒 强制转换字节[]en字节[]:0毫秒 写在回忆录中:3~5毫秒

==>线性处理,我们能得到的最好结果

进程:buffereImage=>int[]=>write 注意:使用getRGB转换int[]中的图像 图像1900*1600:2500毫秒

==>getRGB获取每个图像像素:必须写入的300万:太长

进程:BuffereImage=>Raster=>DataBuffer=>write

从缓冲区映像获取数据缓冲区:0毫秒 回忆录:2500毫秒

图像1900*1600:2500毫秒


==>DataBuffer的大小为300万,写入时间太长

以下是我运行的基准测试的反馈: resumse:似乎ImageIO是图像处理方面最优化的类

进程:BuffereImage=>byte[]=>byte[]=>int[]=>write 注意:使用ImageIO转换字节为[]的图像

图像1900*1600 从BuffereImage获取字节[]:45毫秒 强制转换字节[]en字节[]:0毫秒 在内存中写入:4~9毫秒

图像1280*1024 从BuffereImage中获取一个字节[]:20?23毫秒 强制转换字节[]en字节[]:0毫秒 在内存中写入:4*7毫秒

图像800*600 从BuffereImage获取字节[]:9毫秒 强制转换字节[]en字节[]:0毫秒 写在回忆录中:3~5毫秒

==>线性处理,我们能得到的最好结果

进程:buffereImage=>int[]=>write 注意:使用getRGB转换int[]中的图像 图像1900*1600:2500毫秒

==>getRGB获取每个图像像素:必须写入的300万:太长

进程:BuffereImage=>Raster=>DataBuffer=>write

从缓冲区映像获取数据缓冲区:0毫秒 回忆录:2500毫秒

图像1900*1600:2500毫秒


==>DataBuffer的大小为300万,写入时间太长

不幸的是,我没有更多的时间完全尝试:在我上次的测试中,令人惊讶的是,考虑到下面的基准,getPixels似乎有很好的响应时间。如果人们试图改进他们的过程,他们应该尝试一下,也许可以确认一下?不幸的是,我没有更多的时间来完全尝试:在我上次的测试中,令人惊讶的是,考虑到下面的基准,getPixels似乎有很好的回答时间。如果人们试图改进他们的流程,他们应该尝试一下,或者确认一下?