Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
5316ecb5
Commit
5316ecb5
authored
Apr 02, 1997
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Win32 precision clock() -- Mark Hammond.
parent
ad57b231
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
1 deletion
+44
-1
Modules/timemodule.c
Modules/timemodule.c
+44
-1
No files found.
Modules/timemodule.c
View file @
5316ecb5
...
...
@@ -79,6 +79,12 @@ extern int ftime();
#endif
/* MS_WINDOWS */
#endif
/* !__WATCOMC__ */
#ifdef MS_WIN32
/* Win32 has better clock replacement */
#include <largeint.h>
#undef HAVE_CLOCK
/* We have our own version down below */
#endif
/* MS_WIN32 */
/* Forward declarations */
static
int
floatsleep
Py_PROTO
((
double
));
static
double
floattime
Py_PROTO
(());
...
...
@@ -120,6 +126,43 @@ time_clock(self, args)
}
#endif
/* HAVE_CLOCK */
#ifdef MS_WIN32
/* Due to Mark Hammond */
static
PyObject
*
time_clock
(
self
,
args
)
PyObject
*
self
;
PyObject
*
args
;
{
static
LARGE_INTEGER
ctrStart
;
static
LARGE_INTEGER
divisor
=
{
0
,
0
};
LARGE_INTEGER
now
,
diff
,
rem
;
if
(
!
PyArg_NoArgs
(
args
))
return
NULL
;
if
(
LargeIntegerEqualToZero
(
divisor
))
{
QueryPerformanceCounter
(
&
ctrStart
);
if
(
!
QueryPerformanceFrequency
(
&
divisor
)
||
LargeIntegerEqualToZero
(
divisor
))
{
/* Unlikely to happen -
this works on all intel machines at least!
Revert to clock() */
return
PyFloat_FromDouble
(
clock
());
}
}
QueryPerformanceCounter
(
&
now
);
diff
=
LargeIntegerSubtract
(
now
,
ctrStart
);
diff
=
LargeIntegerDivide
(
diff
,
divisor
,
&
rem
);
/* XXX - we assume both divide results fit in 32 bits. This is
true on Intels. First person who can afford a machine that
doesnt deserves to fix it :-)
*/
return
PyFloat_FromDouble
((
double
)
diff
.
LowPart
+
((
double
)
rem
.
LowPart
/
(
double
)
divisor
.
LowPart
));
}
#define HAVE_CLOCK
/* So it gets included in the methods */
#endif
/* MS_WIN32 */
static
PyObject
*
time_sleep
(
self
,
args
)
PyObject
*
self
;
...
...
@@ -131,7 +174,7 @@ time_sleep(self, args)
Py_BEGIN_ALLOW_THREADS
if
(
floatsleep
(
secs
)
!=
0
)
{
Py_BLOCK_THREADS
return
NULL
;
return
NULL
;
}
Py_END_ALLOW_THREADS
Py_INCREF
(
Py_None
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment