COMP 3000 Lab 2 2011: Difference between revisions
performance on vm Code |
|||
Line 1: | Line 1: | ||
==Part B (on your own)== | ==Part B (on your own)== | ||
Line 33: | Line 9: | ||
# What are two strategies for accelerating programs that are slow within VMs? | # What are two strategies for accelerating programs that are slow within VMs? | ||
# What are "guest additions" for VMs? What are they for? | # What are "guest additions" for VMs? What are they for? | ||
/* perf.c for linux */ | |||
#include <stdio.h> | |||
#include <time.h> | |||
#define TIMEVARS() clock_t start, stop; double sec | |||
#define TIMESTART(msg) printf(msg "..."); fflush(stdout); start = clock() | |||
#define TIMESTOP() stop = clock(); \ | |||
sec = ((double)(stop-start))/CLOCKS_PER_SEC; \ | |||
printf("done (%.3f seconds)\n", sec) | |||
int main() | |||
{ | |||
int n1 = 12345,n2 = 188765; | |||
int i= 0 ,j=0,composite = 0; | |||
TIMEVARS(); | |||
TIMESTART("Starting work"); | |||
for(i = n1; i < n2; i++) { | |||
for(j = 2; j < i; j++) { | |||
if (i%j == 0) { | |||
composite++; | |||
break; | |||
} | |||
} | |||
} | |||
TIMESTOP(); | |||
printf("%d primes found between %d and %d\n",n2-n1 - composite,n1,n2); | |||
return 0; | |||
} | |||
/* perf.c for windows - compile using Visual Studio C++ compiler 2010 */ | |||
#include "stdafx.h" | |||
#include <cstdio> | |||
#include <ctime> | |||
#define TIMEVARS() clock_t start, stop; double sec | |||
#define TIMESTART(msg) printf(msg "..."); fflush(stdout); start = clock() | |||
#define TIMESTOP() stop = clock(); \ | |||
sec = ((double)(stop-start))/CLOCKS_PER_SEC; \ | |||
printf("done (%.3f seconds)\n", sec) | |||
int _tmain(int argc, _TCHAR* argv[]) | |||
{ | |||
int n1 = 12345,n2 = 188765; | |||
int i= 0 ,j=0,composite = 0; | |||
TIMEVARS(); | |||
TIMESTART("Starting work"); | |||
for(i = n1; i < n2; i++) { | |||
for(j = 2; j < i; j++) { | |||
if (i%j == 0) { | |||
composite++; | |||
break; | |||
} | |||
} | |||
} | |||
TIMESTOP(); | |||
printf("%d primes found between %d and %d\n",n2-n1 - composite,n1,n2); | |||
return 0; | |||
} |
Revision as of 14:36, 26 September 2011
Part B (on your own)
- Typically, what does a guest OS's hard disk look like to the host OS?
- Do guest OSs need the same device drivers as host OSs? Why?
- Why do we "open" files? Specifically, to what extent is it possible to do file I/O without open and close operations - assuming you could change the UNIX API?
- What is the relationship between dynamic library calls and system calls?
- What type of programs should run at near-native efficiency within a virtual machine? Why?
- What type of programs should be significantly slower within a virtual machine? Why?
- What are two strategies for accelerating programs that are slow within VMs?
- What are "guest additions" for VMs? What are they for?
/* perf.c for linux */ #include <stdio.h> #include <time.h> #define TIMEVARS() clock_t start, stop; double sec #define TIMESTART(msg) printf(msg "..."); fflush(stdout); start = clock() #define TIMESTOP() stop = clock(); \ sec = ((double)(stop-start))/CLOCKS_PER_SEC; \ printf("done (%.3f seconds)\n", sec) int main() { int n1 = 12345,n2 = 188765; int i= 0 ,j=0,composite = 0; TIMEVARS(); TIMESTART("Starting work"); for(i = n1; i < n2; i++) { for(j = 2; j < i; j++) { if (i%j == 0) { composite++; break; } } } TIMESTOP(); printf("%d primes found between %d and %d\n",n2-n1 - composite,n1,n2); return 0; }
/* perf.c for windows - compile using Visual Studio C++ compiler 2010 */ #include "stdafx.h" #include <cstdio> #include <ctime> #define TIMEVARS() clock_t start, stop; double sec #define TIMESTART(msg) printf(msg "..."); fflush(stdout); start = clock() #define TIMESTOP() stop = clock(); \ sec = ((double)(stop-start))/CLOCKS_PER_SEC; \ printf("done (%.3f seconds)\n", sec) int _tmain(int argc, _TCHAR* argv[]) { int n1 = 12345,n2 = 188765; int i= 0 ,j=0,composite = 0; TIMEVARS(); TIMESTART("Starting work"); for(i = n1; i < n2; i++) { for(j = 2; j < i; j++) { if (i%j == 0) { composite++; break; } } } TIMESTOP(); printf("%d primes found between %d and %d\n",n2-n1 - composite,n1,n2); return 0; }