오라클(10G)의 JVM와 일반 JVM과 속도가 차이가 많은 이유는 무엇인가요?
ch073 수험생

답변 채택시 : 0코아

답변 0 추천 0 조회 3423 2006.06.01
제목 없음

이미지파일의 사이즈를 조정해서 저장하는 class파일으로 로드시켜 오라클 function으로 호출하면 무지 느리거든요

일반 java sdk(1.5)로 하면 4초 걸리는 것이

오라클 에서 사용하면 40초 걸리는 것 같습니다.

소스는 아래와 같이 class 소스 파일과 function이로 되었습니다.

 

CREATE OR REPLACE function Thumbnail(a in varchar2, b in varchar2, c in number)

RETURN VARCHAR2

AS

   LANGUAGE JAVA

   NAME 'Thumbnail.createThumbnail(java.lang.String, java.lang.String, oracle.sql.NUMBER) return java.lang.String';

/

 

 

 

 

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "Thumbnail" AS

import java.io.*;

import java.awt.*;

import java.awt.image.*;

import javax.swing.*;

import com.sun.image.codec.jpeg.*;

import oracle.sql.NUMBER;

 

 

public class Thumbnail {

    public static String createThumbnail(String soruce, String target, NUMBER BtargetW) throws Exception{

        

        int targetW = BtargetW.intValue();

        

        

        String sRtnString = "N";

        try {

            File tarFile = new File(target);

            File tarDir = new File(tarFile.getParent());

 

            if(!tarDir.exists())

                tarDir.mkdir();

            

 

            Image imgSource = new ImageIcon(soruce).getImage();

 

            int oldW = imgSource.getWidth(null);

            int oldH = imgSource.getHeight(null);

 

            int newW = targetW;

            int newH = (targetW * oldH) / oldW;

            

 

            Image imgTarget = imgSource.getScaledInstance(newW, newH,

                                                          Image.SCALE_SMOOTH);

            

 

            int pixels[] = new int[newW * newH];

 

            PixelGrabber pg = new PixelGrabber(imgTarget, 0, 0, newW, newH, pixels, 0,

                                               newW);

            pg.grabPixels();

 

            BufferedImage bi = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_RGB);

            bi.setRGB(0, 0, newW, newH, pixels, 0, newW);

            

 

            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(target));

            

 

            JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(bos);

            

 

            JPEGEncodeParam jep = jpeg.getDefaultJPEGEncodeParam(bi);

            jep.setQuality(1, false);

            

 

            jpeg.encode(bi, jep);

            

            

            if (bos != null)

                bos.close();                                

 

            sRtnString = "Y";

 

        }

        catch(Exception e) {

            sRtnString = "N";

            e.printStackTrace();

        }

 

        return sRtnString;

    }

 

}

/

 

 

 

댓글 (0)
목록 답변등록