草庐IT

JavaCL - 管理非常大的图像处理

我正在从事一个处理大型图像处理(每张图像50Mo)的工业项目,关键是性能。在JavaCL的帮助下,我选择将图像处理委托(delegate)给GPU。我编写了一些测试以确定该方法是否正确。结果一目了然!超过100次图像着色GPU获胜:GPU=172ms与CPU=438ms目前,对于这种计算,GPU显然比CPU更强大但是!有问题,内存的问题。事实上,我的显卡有256Mo的VRAM,无法分配大于8Mo的图像!那么,我的问题是,处理大于8Mo的图像的最佳方法是什么?拼贴图像并处理每个拼贴?会成为性能killer由于RAM和VRAM之间的延迟将原始像素提取为float4vector并将它们发送到

Java 7 的 nio.file 包在创建新文件时非常慢

我正在尝试从java程序创建300M文件,我从旧文件API切换到新的java7nio包,但新包比旧包更慢。与使用旧文件API时相比,我发现CPU利用率较低,但我正在运行这个简单的代码,我获得了0.5兆字节/秒的文件传输速率,并且来自java的写入正在从一个磁盘读取并写入另一个(写入是访问磁盘的唯一进程)。Files.write(FileSystems.getDefault().getPath(filePath),fiveToTenKBytes,StandardOpenOption.CREATE);这里有没有希望得到合理的吞吐量?更新:我正在从大文件中解压3亿个5-10k字节的图像文件。

java - 按最大行拆分非常大的文本文件

我想将一个包含字符串的大文件拆分成一组新的(较小的)文件并尝试使用nio2。我不想将整个文件加载到内存中,所以我尝试使用BufferedReader。较小的文本文件应受文本行数的限制。该解决方案有效,但我想问问是否有人知道使用java8(也许是带有stream()-api的lamdas?)和nio2性能更好的解决方案:publicvoidsplitTextFiles(PathbigFile,intmaxRows)throwsIOException{inti=1;try(BufferedReaderreader=Files.newBufferedReader(bigFile)){Stri

java - BigDecimal.movePointRight() 挂起非常大的数字

下面的程序卡住了,我不知道为什么。importjava.math.*;publicclassBigDec{publicstaticBigDecimalexp(doublez){//Finde^z=e^intPart*e^fracPart.returnnewBigDecimal(Math.E).pow((int)z,MathContext.DECIMAL128).multiply(newBigDecimal(Math.exp(z-(int)z)),MathContext.DECIMAL128);}publicstaticvoidmain(String[]args){//Thisworks

java - BufferedInputStream 到 ByteArrayOutputStream 非常慢

我有一个与以下链接非常相​​似的问题:PDFtobytearrayandviceversa主要区别在于我试图通过包含二进制的ServerSocket而不是文件来解释Socket连接。这按预期工作。但是,我遇到的问题是这个过程需要很长时间才能读入内存,大约1分30秒读取500字节(尽管每个流的大小会有很大差异)这是我的代码:BufferedInputStreaminput=newBufferedInputStream(theSocket.getInputStream());byte[]buffer=newbyte[8192];intbytesRead;ByteArrayOutputStr

c# - 非常大的整数的快速乘法

如何将两个大于32个字符的非常大的数字相乘,例如100的乘法!122!或22^122与11^200在分而治之的帮助下,有没有人有java代码或C#代码? 最佳答案 你可能应该使用java.math.BigInteger.这允许表示超过2^32甚至2^64的整数值。BigInteger值基本上仅受程序可用内存量的限制,即在32位系统上约为4GB,在64位系统上有相当多的可用物理+虚拟内存。importjava.math.BigInteger;classFoo{publicstaticvoidmain(Stringargs[]){Big

java - 非常简单的Swing骰子程序中的神秘(并发/组件绘制?)错误

不好意思的问题标题,很抱歉,我对此错误的原因感到困惑,并且不知道如何表达该问题。我正在学习基本的Swing,并从在线书籍《Java编程简介》中学习thisexercise。我没有遵循这封信的指示,而是尝试这样做:有一个显示两个骰子的可视表示的窗口当您单击其中一个骰子时,它会“滚动”并显示新值我的实现:一个非常基本的JDie对象,它扩展了JPanel覆盖paintComponent方法以绘制模具表示每次更改值都会更改模具颜色,仅用于视觉提示添加了一个监听器,以在按下鼠标然后“掷出”骰子时重绘(repaint)该错误非常具体:运行DieTest主方法调整窗口大小以适合两个模具单击第二个骰子

java - 解析非常大的 XML 文件并编码为 Java 对象

我有以下问题:我有非常大的XML文件(如300+Meg),我需要解析它们以便将它们的一些值添加到数据库中。这些文件的结构也非常复杂。我想使用StaxParser,因为它提供了一次只对XML文件的一部分进行拉式解析(从而处理)的很好的可能性,因此不会将整个文件加载到内存中,但另一方面可以通过Stax(至少在这些XML文件上)很麻烦,我需要编写大量代码。从后一种观点来看,如果我可以将XML文件编码为Java对象(就像JAX-B所做的那样),这将对我有很大帮助,但是这会同时加载整个文件以及内存中的大量对象实例。我的问题是,是否有某种方法可以按顺序拉式解析(或仅部分解析)文件,然后仅将这些部分

java - 从Java中的非常大的图像文件中读取区域

是否有一个Java库可以读取非常大的图像(例如JPEG)文件(>10,000x10,000像素)的区域,而无需将整个图像保存在内存中。或者,哪个Java库能够以最少的开销处理非常大的图像文件。 最佳答案 标准ImageIO允许您读取(大)图像的区域,而无需先将整个图像读入内存。RectanglesourceRegion=newRectangle(x,y,w,h);//TheregionyouwanttoextractImageInputStreamstream=ImageIO.createImageInputStream(input

java - 非常小的数字

我正在编写一个Mandelbrot查看器。一切正常,除了当你达到非常高的变焦时,图像开始在大约10^(-14)时像素化。我猜是因为我的双变量内存不足。我可以使用什么来允许我使用非常小的数字?我需要使用java.lang.Math类,我认为它不支持bigdecimal 最佳答案 如果你真的需要任意精度,最好的选择可能是BigDecimal.如果您关心效率,我怀疑您最好尝试扩展您的值并将它们保持在1.0附近。 关于java-非常小的数字,我们在StackOverflow上找到一个类似的问题: