[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Speed up hack
From: |
Vladimir N. Oleynik |
Subject: |
[Qemu-devel] Speed up hack |
Date: |
Mon, 17 May 2004 20:22:28 +0400 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040117 |
Hi.
I generate little speed up hack:
1) new TICKS_BEFORE_POLL constant from make cpu loop before
call poll().
2) call DMA_run() if sb16 or floppy present
3) also, for extreme overclocker: if change MAX_FD from 2 to 1,
you can make very little speed up also ;-)
--- vl.c~ 2004-05-17 20:15:26.000000000 +0400
+++ vl.c 2004-05-17 19:52:44.000000000 +0400
@@ -1634,6 +1634,8 @@
}
}
+#define TICKS_BEFORE_POLL 100
+
int main_loop(void)
{
#ifndef _WIN32
@@ -1641,6 +1643,7 @@
IOHandlerRecord *ioh, *ioh_next;
uint8_t buf[4096];
int n, max_size;
+ int tick_before_poll=TICKS_BEFORE_POLL;
#endif
int ret, timeout;
CPUState *env = global_env;
@@ -1670,6 +1673,11 @@
Sleep(timeout);
#else
+ if(tick_before_poll!=0 && timeout==0) {
+ tick_before_poll--;
+ goto ltick_before_poll;
+ }
+ tick_before_poll=TICKS_BEFORE_POLL;
/* poll any events */
/* XXX: separate device handlers from system ones */
pf = ufds;
@@ -1741,6 +1749,7 @@
}
#endif
+ ltick_before_poll:
#endif
if (vm_running) {
@@ -1750,10 +1759,18 @@
if (audio_enabled) {
/* XXX: add explicit timer */
SB16_run();
- }
+ DMA_run();
+ } else {
+ int i;
- /* run dma transfers, if any */
- DMA_run();
+ /* run dma transfers, if any */
+ for(i = 0; i < MAX_FD; i++) {
+ if(fd_table[i]) {
+ DMA_run();
+ break;
+ }
+ }
+ }
}
/* real time timers */
--w
vodz
- [Qemu-devel] Speed up hack,
Vladimir N. Oleynik <=