[comp.lang.c] Tasking speeds: Ada vs. Unix/C

wtwolfe@hubcap.clemson.edu (Bill Wolfe) (11/20/89)

  The following article relates to the recent discussion
  of Ada vs. UNIX/C and lightweight processes.  Notice the 
  disastrous performance produced by UNIX/C relative to Ada.

*******************************

ADA-SW Digest               Sat, 18 Nov 89       Volume 89 : Issue  48

Date: Fri, 17 Nov 89 11:03:44 CST
From: steve@titan.tsd.arlut.utexas.edu (Steve Glicker)
Subject: Simple process and task switching speeds

Recently there have been references to lightweight processes, UNIX/C
processes, and Ada tasking in terms of speed (Bill Wolfe on Date: 15
Nov 89 16:06:41 GMT and Walter Rowe on Date: 16 Nov 89 18:20:01 GMT).

Over the last few months, I have been collecting numbers on
task/process switching speeds.  Several tests have been run were two
tasks or processes invoke each other several hundred thousand times,
execution time is then divided by switches...

The information I have collected is in the following table.  This is
quite informal -- these are rough estimates.  Does anyone have
estimates on the speed of lightweight processes, etc.?  Data on
embedded systems is welcome.  I would also appreciate any references
to work published on this topic.

 Platform        Test             Switching Speed
==============  ================ =================

microVAX (VMS)  VMS processes    ~ 0.6  ms

microVAX (VMS)  DEC Ada tasks    ~ 0.6  ms

Sun 3/50 (UNIX) Function call    ~ 0.01 ms

Sun 3/50 (UNIX) Simula processes ~ 0.2  ms

Sun 3/50 (UNIX) Verdix Ada tasks ~ 0.3  ms

Sun 3/50 (UNIX) UNIX/C processes ~10.0  ms


I understand that the microVAXs ran at ~0.9 VAX 780 MIPS and the Sun
3/50 at ~1.5 VAX 780 MIPS.  In the cases of Ada and Simula a scheduler
supplied with the language was used.

Steve Glicker
(steve@titan.tsd.arlut.utexas.edu)

**********************************


   Bill Wolfe, wtwolfe@hubcap.clemson.edu