You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by Sandeep Sharma <sa...@yahoo.com> on 2002/03/28 18:03:05 UTC
About CharTerminatedInputStream
Hi!
I have some doubts regarding the effeciency of the
CharTerminatedInputStream :
Processing every byte of the message will shoot up CPU
usage like any thing for example if JAMES receive a
message of 8K then there will be
8 * 1024 = 8192 read() function calls
further the overhead of calling read() function 8192
times + the processing time will consume lots of CPU
cycles consequently reducing the overall capacity of
the JAMES to handle mails
I would advice JAMES developers to use Transaction
Cost Analysis (TRC) method to performance test JAMES
Mail Server
Sandiep
CTO Infosoft TechNet Private Limited
http://www.infosoftin.com
__________________________________________________
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards�
http://movies.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Sandeep Sharma <sa...@yahoo.com>.
Hi!
no matter how well JVM optimizes the read method in
this case read method will be called for each byte
Regards
Sandiep U. Sharma
CTO Infosoft
__________________________________________________
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards�
http://movies.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: About CharTerminatedInputStream
Posted by Danny Angus <da...@thought.co.uk>.
Oh definitely,
I know theres a huge performace boost when reading files using byte[], I
don't know what parts of James we're talking about without looking, and I
suspect some things will benefit much more from block reads than others.
I just flung out the question in a fit of idle curiosity (I seem to be good
at that today, and its not even friday).. ;-)
d.
> -----Original Message-----
> From: Stephan Schiessling [mailto:s@rapi.com]
> Sent: 28 March 2002 19:18
> To: James Developers List
> Subject: Re: About CharTerminatedInputStream
>
>
>
> Most likely read(byte[]...) is used by other classes.
> These methods class read() internally, but don't you
> think that the JVM optimizes these method calls ?
> I bet that they are optimized.
>
> Bye,
>
> Stephan Schiessling
>
>
>
>
>
> Sandeep Sharma wrote:
> > Hi!
> >
> > I have some doubts regarding the effeciency of the
> > CharTerminatedInputStream :
> >
> > Processing every byte of the message will shoot up CPU
> > usage like any thing for example if JAMES receive a
> > message of 8K then there will be
> >
> > 8 * 1024 = 8192 read() function calls
> >
> > further the overhead of calling read() function 8192
> > times + the processing time will consume lots of CPU
> > cycles consequently reducing the overall capacity of
> > the JAMES to handle mails
> >
> > I would advice JAMES developers to use Transaction
> > Cost Analysis (TRC) method to performance test JAMES
> > Mail Server
> >
> > Sandiep
> > CTO Infosoft TechNet Private Limited
> > http://www.infosoftin.com
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Yahoo! Movies - coverage of the 74th Academy Awards®
> > http://movies.yahoo.com/
> >
> > --
> > To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Stephan Schiessling <s...@rapi.com>.
Sandeep Sharma wrote:
> Dear Stephan Schiessling
>
> I don't think read(byte[] ...) methods calls read
> internally
Look at java.io.InputStream, but of course in a sub class these can
be implemented by an own implementation.
>
> what i believe is that when u call getInputStream on
> socket it would return Ref to instance of
> SocketInputStream Class that contains a native method
> called socketRead(byte b[], int off, int len)
>
> i would like u to go through the source code of the
> SocketInputStream class
You have a little problem, if you use CharTerminatedInputStream
with read(byte[], ...) (without subcalls to read()):
This InputStream may read too much bytes and these bytes may have to
feed these extra bytes back into the "super"-InputStream. The mark/reset
features of InputStream may not be supported, so that you may end up
useing some extra BufferedInputStream.
CharTerminatedInputStream does not directly use an InputStream of a
Socket, so I think the only way to check if you can get performance
improvements is to write an alternative class and test it.
Bye,
Stephan Schiessling
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Sandeep Sharma <sa...@yahoo.com>.
Dear Stephan Schiessling
I don't think read(byte[] ...) methods calls read
internally
what i believe is that when u call getInputStream on
socket it would return Ref to instance of
SocketInputStream Class that contains a native method
called socketRead(byte b[], int off, int len)
i would like u to go through the source code of the
SocketInputStream class
Thanks & regards
Sandiep U. Sharma
CTO Infosoft
__________________________________________________
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards�
http://movies.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Stephan Schiessling <s...@rapi.com>.
Most likely read(byte[]...) is used by other classes.
These methods class read() internally, but don't you
think that the JVM optimizes these method calls ?
I bet that they are optimized.
Bye,
Stephan Schiessling
Sandeep Sharma wrote:
> Hi!
>
> I have some doubts regarding the effeciency of the
> CharTerminatedInputStream :
>
> Processing every byte of the message will shoot up CPU
> usage like any thing for example if JAMES receive a
> message of 8K then there will be
>
> 8 * 1024 = 8192 read() function calls
>
> further the overhead of calling read() function 8192
> times + the processing time will consume lots of CPU
> cycles consequently reducing the overall capacity of
> the JAMES to handle mails
>
> I would advice JAMES developers to use Transaction
> Cost Analysis (TRC) method to performance test JAMES
> Mail Server
>
> Sandiep
> CTO Infosoft TechNet Private Limited
> http://www.infosoftin.com
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Movies - coverage of the 74th Academy Awards®
> http://movies.yahoo.com/
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Send email from an application
Posted by tarun <ta...@datainfosys.net>.
i think u can go for rfc's fpr smtp
anyway basic commands are
like
connecting to SMTP ports and using
HELO etc
u can check the list of commands by using HELP
regards
tarun
*************************************************
Tarundeep Singh Kalra
Project Leader(Server Side Solutions)
Data Infosys Ltd.
Development Center
D-47 Hanuman Nagar
Vaishali Nagar
Jaipur
Raj(INDIA)
Ph:(091)-0141-245039,245040.
Fax:- (091)-0141-703712
visit us at www.datainfosys.com
*************************************************
----- Original Message -----
From: "Thomas Singer" <th...@regnis.de>
To: "James Developers List" <ja...@jakarta.apache.org>
Sent: Sunday, April 14, 2002 10:13 PM
Subject: Re: Send email from an application
> Thank you very much. Any idea, where I can find the basic SMTP commands in
> James?
>
> Best regards,
> Tom
>
>
> At 23:00 08.04.2002 -0700, you wrote:
> >Hi! Thomas
> >
> >I believe that u want to send mail directly (without
> >any dependancy on any kind of middleware servers like
> >SMTP or DNS)
> >
> >To avoid SMTP server & JAVA MAIL
> >to avoid use of SMTP server u can write very small
> >program (may be in Java) that implements basic SMTP
> >commands and connects connects directly to the
> >recipients MX host
> >
> >To avoid DNS
> >i believe that ur support team members e-mail accounts
> >are on ur own server and u know the IP of ur SMTP
> >server. if this is the case u don't need DNS server to
> >resolve MX host
> >
> >Regards
> >Sandiep U. Sharma
> >http://www.infosoftin.com
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Send email from an application
Posted by Sandeep Sharma <sa...@yahoo.com>.
Hi, Tom
for ur Convenience u can use the code below
import java.util.*;
import java.net.*;
import java.io.*;
public class SMTPSender
{
/**
* Hashtable will hold the rejected recipients
addresses
*/
Hashtable htRejectedRelay = new Hashtable();
/**
* Send message to destination smtphost
* @author Sandiep U. Sharma
(http://www.infosoftin.com)
* @smtphost: SMTP Host address
* @From: Sender email address
* @vt: Vector containing recipients e-mail addresses
* @mmess: Byte array containing message (include
<CRLF>.<CRLF> characters)
*/
public void sendMessage(String smtphost,String From,
Vector vt, byte[] mmess)
{
//System.out.println("smtphost:"+smtphost+"
From:"+From+" Rcpt:"+vt.toString());
//System.out.println("Connecting to :"+smtphost);
Socket sk=null;
DataInputStream din=null;
DataOutputStream dout=null;
try {
// connect to smtp host and initialize I/O streams
sk = new Socket(smtphost,25);
System.out.println("Connected");
String strresp;
din = new DataInputStream(sk.getInputStream());
dout = new DataOutputStream(sk.getOutputStream());
strresp = din.readLine();
System.out.println("S:"+strresp);
if (strresp.startsWith("220"))
dout.writeBytes("helo <server>\r\n"); //Replace
server with hostname
else {
System.out.println("Error :"+strresp);
recipientRejected(vt.toString(),strresp);
return;
}
strresp = din.readLine();
System.out.println("S:"+strresp);
if (strresp.startsWith("250"))
{
dout.writeBytes("mail from:<"+From+">\r\n");
}
else {
System.out.println("Error :"+strresp);
recipientRejected(vt.toString(),strresp);
return;
}
strresp = din.readLine();
System.out.println("S:"+strresp);
if (strresp.startsWith("250"))
{
for (int i = 0;i<vt.size();i++)
{
String strrcpt = (String) vt.elementAt(i);
dout.writeBytes("rcpt to:<"+strrcpt+">\r\n");
strresp = din.readLine();
//System.out.println("S:"+strresp);
if (!strresp.startsWith("250")) {
recipientRejected(strrcpt,strresp);
}
}
}
else
{
System.out.println("Error :"+strresp);
recipientRejected(vt.toString(),strresp);
return;
}
dout.writeBytes("data\r\n");
strresp = din.readLine();
System.out.println("S:"+strresp);
if (strresp.startsWith("354"))
{
dout.write(mmess);
}
else {
System.out.println("Error :"+strresp);
recipientRejected(vt.toString(),strresp);
return;
}
strresp = din.readLine();
System.out.println("S:"+strresp);
dout.writeBytes("quit\r\n");
} catch (Exception ioe) {
System.out.println("I/O error while relaying
mail:"+ioe.toString());
recipientRejected(vt.toString(),ioe.getMessage());
return;
}
try {
din.close();
dout.close();
sk.close();
} catch (Exception ioe) {/* log this exception */}
}
private void recipientRejected(String
strrecipient,String strReason)
{
// do somethis here for the rejected relayed
recipients
System.out.println("\t recipient rejected
"+strrecipient);
htRejectedRelay.put(strrecipient,strReason);
}
}
best Regards
Sandiep U. Sharma, CTO Infosoft
www.infosoftin.com
__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Send email from an application
Posted by Thomas Singer <th...@regnis.de>.
Thank you very much. Any idea, where I can find the basic SMTP commands in
James?
Best regards,
Tom
At 23:00 08.04.2002 -0700, you wrote:
>Hi! Thomas
>
>I believe that u want to send mail directly (without
>any dependancy on any kind of middleware servers like
>SMTP or DNS)
>
>To avoid SMTP server & JAVA MAIL
>to avoid use of SMTP server u can write very small
>program (may be in Java) that implements basic SMTP
>commands and connects connects directly to the
>recipients MX host
>
>To avoid DNS
>i believe that ur support team members e-mail accounts
>are on ur own server and u know the IP of ur SMTP
>server. if this is the case u don't need DNS server to
>resolve MX host
>
>Regards
>Sandiep U. Sharma
>http://www.infosoftin.com
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Sandeep Sharma <sa...@yahoo.com>.
Hi Stephan Schiessling,
Below is the second version of the code in which i
have taken care of some of the issues raised by u
Bye
import java.io.*;
/**
* @author: Sandiep. U. Sharma
*/
public class NewOptTerminatedStream extends
InputStream
{
private InputStream in;
static final byte term[] = {(byte) '\n', (byte)
'.',(byte) '\r',(byte) '\n'};
byte buf[] = new byte[2048]; //allocate buffer
int bcount = -1;
int pos = -1;
boolean cont = true;
int len;
int j=0;
public NewOptTerminatedStream(InputStream in,
char[] terminator) throws Exception
{
//Initialize buffers
this.in = in;
readByteStream();
}
/**
* Readahed a block of data
*/
public void readByteStream() throws IOException
{
len=0;
if (!cont)
{
bcount = -1; pos = -1;
return;
}
bcount = in.read(buf);
int c=0;
if (j>0){c=j;} //If term char is pending for next
block
for (int i = 0;i<bcount;i++)
{
if (term[c] == buf[i])
{
for (j = c;(j<4) && (i < bcount);j++)
{
if (term[j] != buf[i++])
{
j = -1;
break;
}
}
if (j == 4) //End of file found
{
len = i-4;
pos = 0;
if((bcount > len) && (in instanceof
PushbackInputStream))
{
//If in is a PushBackInputStream the unread
extra bytes readed
((PushbackInputStream)in).unread(buf,len,(bcount-len));
}
bcount=len;
cont = false;
System.out.println("End of file reached");
break;
}
} //End of If block
} // End of for loop
if (cont)
{
len = bcount;
pos = 0;
}
}
public int read() throws IOException
{
if ((bcount >0) && (pos < bcount))
{
return buf[pos++];
} else if (!cont || (bcount == -1)) {
return -1;
} else {
this.readByteStream();
return buf[pos++];
}
}
public int read(byte[] b,int off,int len) throws
IOException
{
if (b.length == 0)
return 0;
if ((bcount >0) && (pos < bcount))
{
int curlen = bcount-pos;
if (curlen <= len)
{
System.arraycopy(buf,pos,b,off,curlen);
this.readByteStream();
return curlen;
} else if (curlen > len)
{
curlen = len;
System.arraycopy(buf,pos,b,off,curlen);
pos = pos + curlen-1;
return curlen;
}
} else if (!cont || (bcount == -1)) {
return -1;
}
return -1;
}
}
__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Stephan Schiessling <s...@rapi.com>.
Hi Sandeep Sharma,
Your code has some problems:
1) In the readBlockStream method, you read a whole
block (2048) bytes, but you forgot a loop to test
all occurences of the terminating characters (actually
it is only tested once).
2) No sign of code to test the terminating characters ("\n.\r\n")
between two blocks.
3) OptTerminatedInputStream reads too much bytes from the underlaying InputStream (given
in the constructor). You cannot expect, that the underlaying InputStream
ends with the terminating characters, so that OptTerminatedInputStream may steal
bytes from underlaying InputStream, which are not accessible by other code.
I think this will be a problem, if more than 1 emails are sent in the same stream.
And this is may main concern about your solution here. I mentioned this in an earlier email in this Thread,
in which I sketched a solution to this problem, but at the same time, I think it will
eat um any performance improvements.
Bye,
Stephan
Sandeep Sharma wrote:
> Hi Stephan,
>
> go through the code below
>
> This the first version of the patch for
> CharTerminatedInputStream, this code is just for the
> testing
>
> Also note that i have hardcoded certain things,
> following code also contains a bug (if u try to send
> mails from telnet, however that can be removed easily)
>
> -----------Start of Patch
> public class OptTerminatedStream extends InputStream
> {
> private InputStream in;
> static final byte term[] = {(byte) '\n', (byte)
> '.',(byte) '\r',(byte) '\n'};
> byte buf[] = new byte[2048]; //allocate buffer
> int bcount = -1;
> int pos = -1;
> boolean cont = true;
> //int totalb = 0;
>
> public OptTerminatedStream(InputStream in, char[]
> terminator) throws Exception
> {
> //Initialize buffers
> this.in = in;
> readByteStream();
> }
>
> /**
> * Readahed a block of data
> */
> public void readByteStream() throws IOException
> {
> String line = "";
> int len;
> len=0;
>
> if (!cont)
> {
> bcount = -1;
> pos = -1;
> return;
> }
>
> bcount = in.read(buf);
>
> if (bcount == -1) //if end-of-file reached
> return;
>
> len = bcount;
> pos = 0;
> try
> {
> if (
> buf[len - 4] == term[0] &&
> buf[len - 3] == term[1] &&
> buf[len - 2] == term[2] &&
> buf[len - 1] == term[3]
> )
> {
> cont = false;
> bcount-=4;
> }
> } catch (ArrayIndexOutOfBoundsException aiob){}
> }
>
> public int read() throws IOException
> {
> if ((bcount >0) && (pos < bcount))
> {
> return buf[pos++];
> } else if (!cont || (bcount == -1)) {
> return -1;
> } else {
> this.readByteStream();
> return buf[pos++];
> }
> }
>
> public int read(byte[] b,int off,int len) throws
> IOException
> {
> if (b.length == 0)
> return 0;
>
> if ((bcount >0) && (pos < bcount))
> {
> int curlen = bcount-pos;
> if (curlen <= len)
> {
> System.arraycopy(buf,pos,b,off,curlen);
> this.readByteStream();
> return curlen;
> } else if (curlen > len)
> {
> curlen = len;
> System.arraycopy(buf,pos,b,off,curlen);
> pos = pos + curlen-1;
> return curlen;
> }
> } else if (!cont || (bcount == -1)) {
> return -1;
> }
> return -1;
> }
> }
> ---------------End of Patch
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Tax Center - online filing with TurboTax
> http://taxes.yahoo.com/
>
> --
> To unsubscribe, e-mail: <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Sandeep Sharma <sa...@yahoo.com>.
Hi Stephan,
go through the code below
This the first version of the patch for
CharTerminatedInputStream, this code is just for the
testing
Also note that i have hardcoded certain things,
following code also contains a bug (if u try to send
mails from telnet, however that can be removed easily)
-----------Start of Patch
public class OptTerminatedStream extends InputStream
{
private InputStream in;
static final byte term[] = {(byte) '\n', (byte)
'.',(byte) '\r',(byte) '\n'};
byte buf[] = new byte[2048]; //allocate buffer
int bcount = -1;
int pos = -1;
boolean cont = true;
//int totalb = 0;
public OptTerminatedStream(InputStream in, char[]
terminator) throws Exception
{
//Initialize buffers
this.in = in;
readByteStream();
}
/**
* Readahed a block of data
*/
public void readByteStream() throws IOException
{
String line = "";
int len;
len=0;
if (!cont)
{
bcount = -1;
pos = -1;
return;
}
bcount = in.read(buf);
if (bcount == -1) //if end-of-file reached
return;
len = bcount;
pos = 0;
try
{
if (
buf[len - 4] == term[0] &&
buf[len - 3] == term[1] &&
buf[len - 2] == term[2] &&
buf[len - 1] == term[3]
)
{
cont = false;
bcount-=4;
}
} catch (ArrayIndexOutOfBoundsException aiob){}
}
public int read() throws IOException
{
if ((bcount >0) && (pos < bcount))
{
return buf[pos++];
} else if (!cont || (bcount == -1)) {
return -1;
} else {
this.readByteStream();
return buf[pos++];
}
}
public int read(byte[] b,int off,int len) throws
IOException
{
if (b.length == 0)
return 0;
if ((bcount >0) && (pos < bcount))
{
int curlen = bcount-pos;
if (curlen <= len)
{
System.arraycopy(buf,pos,b,off,curlen);
this.readByteStream();
return curlen;
} else if (curlen > len)
{
curlen = len;
System.arraycopy(buf,pos,b,off,curlen);
pos = pos + curlen-1;
return curlen;
}
} else if (!cont || (bcount == -1)) {
return -1;
}
return -1;
}
}
---------------End of Patch
__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Stephan Schiessling <s...@rapi.com>.
Sandeep Sharma wrote:
> Hi Serge,
>
>
>>Have you used any profiling tools to determine this,
>>or is this just a
>>back-of-the-envelop calculation?
>
> ya initially when i saw the code first time
>
> i have just used a simple application written using
> java mail to test it
>
> the reason for my concerned with the code is that,
> this the code responsible for receiving mail and hence
> ats as a gateway to JAMES
>
>
>>While implementing only read() and not read(byte[])
>>obviously could
>>stand to be improved, when I have done stress
>>testing in conjuction with
>>a profiling tool, I have not found this to consume a
>>noticeable
>>percentage of CPU.
>
>
> i wrote a version of the same code with block read and
> found significant performance boost
Then just send a patch for james, so that we can test this code.
Bye,
Stephan Schiessling
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: Send email from an application
Posted by Sandeep Sharma <sa...@yahoo.com>.
Hi! Thomas
I believe that u want to send mail directly (without
any dependancy on any kind of middleware servers like
SMTP or DNS)
To avoid SMTP server & JAVA MAIL
to avoid use of SMTP server u can write very small
program (may be in Java) that implements basic SMTP
commands and connects connects directly to the
recipients MX host
To avoid DNS
i believe that ur support team members e-mail accounts
are on ur own server and u know the IP of ur SMTP
server. if this is the case u don't need DNS server to
resolve MX host
Regards
Sandiep U. Sharma
http://www.infosoftin.com
__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Sandeep Sharma <sa...@yahoo.com>.
Hi Serge,
> Have you used any profiling tools to determine this,
> or is this just a
> back-of-the-envelop calculation?
ya initially when i saw the code first time
i have just used a simple application written using
java mail to test it
the reason for my concerned with the code is that,
this the code responsible for receiving mail and hence
ats as a gateway to JAMES
> While implementing only read() and not read(byte[])
> obviously could
> stand to be improved, when I have done stress
> testing in conjuction with
> a profiling tool, I have not found this to consume a
> noticeable
> percentage of CPU.
i wrote a version of the same code with block read and
found significant performance boost
>
> --
> Serge Knystautas
> Loki Technologies - Unstoppable Websites
> http://www.lokitech.com/
>
> Sandeep Sharma wrote:
> > Hi!
> >
> > I have some doubts regarding the effeciency of the
> > CharTerminatedInputStream :
> >
> > Processing every byte of the message will shoot up
> CPU
> > usage like any thing for example if JAMES receive
> a
> > message of 8K then there will be
> >
> > 8 * 1024 = 8192 read() function calls
> >
> > further the overhead of calling read() function
> 8192
> > times + the processing time will consume lots of
> CPU
> > cycles consequently reducing the overall capacity
> of
> > the JAMES to handle mails
> >
> > I would advice JAMES developers to use Transaction
> > Cost Analysis (TRC) method to performance test
> JAMES
> > Mail Server
> >
> > Sandiep
> > CTO Infosoft TechNet Private Limited
> > http://www.infosoftin.com
>
>
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>
>
__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: About CharTerminatedInputStream
Posted by Serge Knystautas <se...@lokitech.com>.
Have you used any profiling tools to determine this, or is this just a
back-of-the-envelop calculation?
While implementing only read() and not read(byte[]) obviously could
stand to be improved, when I have done stress testing in conjuction with
a profiling tool, I have not found this to consume a noticeable
percentage of CPU.
--
Serge Knystautas
Loki Technologies - Unstoppable Websites
http://www.lokitech.com/
Sandeep Sharma wrote:
> Hi!
>
> I have some doubts regarding the effeciency of the
> CharTerminatedInputStream :
>
> Processing every byte of the message will shoot up CPU
> usage like any thing for example if JAMES receive a
> message of 8K then there will be
>
> 8 * 1024 = 8192 read() function calls
>
> further the overhead of calling read() function 8192
> times + the processing time will consume lots of CPU
> cycles consequently reducing the overall capacity of
> the JAMES to handle mails
>
> I would advice JAMES developers to use Transaction
> Cost Analysis (TRC) method to performance test JAMES
> Mail Server
>
> Sandiep
> CTO Infosoft TechNet Private Limited
> http://www.infosoftin.com
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
RE: About CharTerminatedInputStream
Posted by Danny Angus <da...@thought.co.uk>.
What would you suggest in place of CharTerminatedInputStream ?
> -----Original Message-----
> From: Sandeep Sharma [mailto:sandiindia@yahoo.com]
> Sent: 28 March 2002 17:03
> To: james-dev@jakarta.apache.org
> Subject: About CharTerminatedInputStream
>
>
> Hi!
>
> I have some doubts regarding the effeciency of the
> CharTerminatedInputStream :
>
> Processing every byte of the message will shoot up CPU
> usage like any thing for example if JAMES receive a
> message of 8K then there will be
>
> 8 * 1024 = 8192 read() function calls
>
> further the overhead of calling read() function 8192
> times + the processing time will consume lots of CPU
> cycles consequently reducing the overall capacity of
> the JAMES to handle mails
>
> I would advice JAMES developers to use Transaction
> Cost Analysis (TRC) method to performance test JAMES
> Mail Server
>
> Sandiep
> CTO Infosoft TechNet Private Limited
> http://www.infosoftin.com
>
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Movies - coverage of the 74th Academy Awards.
> http://movies.yahoo.com/
>
> --
> To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> For additional commands, e-mail:
> <ma...@jakarta.apache.org>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>