<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
Please don't use Uresource.struct_rusage in Modula-3.<BR>
I removed it. It is a portabilty/maintenance problem.<BR>
 <BR>
 - Jay<BR><BR> <BR>

<HR id=stopSpelling>
Date: Mon, 14 Mar 2011 23:21:49 +0000<BR>From: dabenavidesd@yahoo.es<BR>To: rcolebur@scires.com; m3devel@elegosoft.com; jay.krell@cornell.edu<BR>Subject: Re: [M3devel] question on use of Time.Now in thread test program<BR><BR>
<TABLE border=0 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD vAlign=top>Hi all:<BR>see at:<BR>http://www.ic.unicamp.br/~stolfi/EXPORT/software/m3/Misc.html <BR><BR>CPUTime module.<BR>Thanks in advance<BR><BR>--- El <B>lun, 14/3/11, Jay K <I><jay.krell@cornell.edu></I></B> escribió:<BR>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px"><BR>De: Jay K <jay.krell@cornell.edu><BR>Asunto: Re: [M3devel] question on use of Time.Now in thread test program<BR>Para: rcolebur@scires.com, "m3devel" <m3devel@elegosoft.com><BR>Fecha: lunes, 14 de marzo, 2011 18:07<BR><BR>
<DIV id=ecxyiv1082952660>
<STYLE>
.ExternalClass #ecxyiv1082952660 .ecxyiv1082952660hmmessage P
{padding:0px;}
.ExternalClass #ecxyiv1082952660 .ecxyiv1082952660hmmessage
{font-size:10pt;font-family:Tahoma;}

</STYLE>
Time.Now() is very cheap on Windows and should cause no concern.<BR>It is just GetSystemTimeAsFileTime, which just reads some globals, followed by a simple unit and integer to double conversion.<BR>I would avoid 64bit Windows for now, very unfortunate, but I don't trust GetThreadContext.<BR> <BR> <BR>PROCEDURE Now(): T=<BR>  VAR<BR>    fileTime: WinBase.FILETIME;<BR>  BEGIN<BR>    WinBase.GetSystemTimeAsFileTime(fileTime);<BR>    RETURN TimeWin32.FromFileTime(fileTime);<BR>  END Now;<BR><BR><BR>double<BR>__cdecl<BR>TimeWin32__FromFileTime(FILETIME ft)<BR>{<BR>    LARGE_INTEGER li;<BR><BR>    li.LowPart = ft.dwLowDateTime;<BR>    li.HighPart = ft.dwHighDateTime;<BR>    return ((double)li.QuadPart) / 1.0e7;<BR>}<BR><BR><BR>Hm -- I don't like passing structs by value, too hard to be sure how it works -- I'd like to change this to be "READONLY" -- passed by pointer.<BR>Maybe code the entire thing in Modula-3 -- or more likely, the entire thing in C.<BR> <BR>Time.Now() might be more expensive on other platform, I don't know.<BR> <BR>I also see some failures, some success, no pattern.<BR>I think the success is just luck and the code is by its nature very non-deterministic.<BR> <BR> - Jay<BR> <BR>
<HR id=ecxyiv1082952660stopSpelling>
From: rcolebur@SCIRES.COM<BR>To: m3devel@elegosoft.com<BR>Date: Mon, 14 Mar 2011 18:45:44 -0400<BR>Subject: [M3devel] question on use of Time.Now in thread test program<BR><BR>
<STYLE>
.ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass p.ecxyiv1082952660ecxMsoNormal, .ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass li.ecxyiv1082952660ecxMsoNormal, .ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass div.ecxyiv1082952660ecxMsoNormal
{margin-bottom:.0001pt;font-size:11.0pt;font-family:'sans-serif';}
.ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass a:link, .ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass span.ecxyiv1082952660ecxMsoHyperlink
{color:blue;text-decoration:underline;}
.ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass a:visited, .ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass span.ecxyiv1082952660ecxMsoHyperlinkFollowed
{color:purple;text-decoration:underline;}
.ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass span.ecxyiv1082952660ecxEmailStyle17
{font-family:'sans-serif';color:windowtext;}
.ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass .ecxyiv1082952660ecxMsoChpDefault
{;}
.ExternalClass ecx_filtered #ecxyiv1082952660
{;}
.ExternalClass #ecxyiv1082952660 .ecxyiv1082952660ExternalClass div.ecxyiv1082952660ecxWordSection1
{;}
</STYLE>

<DIV class=ecxyiv1082952660ecxWordSection1>
<P class=ecxyiv1082952660ecxMsoNormal>I have a question/concern regarding Mika’s thread test program.</P>
<P class=ecxyiv1082952660ecxMsoNormal> </P>
<P class=ecxyiv1082952660ecxMsoNormal>Each of the threads makes use of the Time.Now() call during each iteration of the thread’s main loop.  </P>
<P class=ecxyiv1082952660ecxMsoNormal> </P>
<P class=ecxyiv1082952660ecxMsoNormal>I haven’t fully investigated, but does anyone have concern that so many calls to the system clock from multiple competing threads might have some side effect on the running of multiple threads?</P>
<P class=ecxyiv1082952660ecxMsoNormal> </P>
<P class=ecxyiv1082952660ecxMsoNormal>I’ve also done some limited experimentation with use of counters to see how many times each type of thread is able to go thru its loop between reporting intervals.</P>
<P class=ecxyiv1082952660ecxMsoNormal> </P>
<P class=ecxyiv1082952660ecxMsoNormal>I continue to see various types of crashes on Windows 7 (64-bit), but sometimes tests are able to succeed.  I haven’t found a repeatable pattern yet to the crashes, so I am still investigating, but just thought it worth asking the above question about use of Time.Now().</P>
<P class=ecxyiv1082952660ecxMsoNormal> </P>
<P class=ecxyiv1082952660ecxMsoNormal>I will also try to experiment with Windows XP 32-bit and report back.</P>
<P class=ecxyiv1082952660ecxMsoNormal> </P>
<P class=ecxyiv1082952660ecxMsoNormal>Regards,</P>
<P class=ecxyiv1082952660ecxMsoNormal>Randy Coleburn</P></DIV></DIV></BLOCKQUOTE></TD></TR></TBODY></TABLE><BR>                                       </body>
</html>