home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11407 < prev    next >
Encoding:
Internet Message Format  |  1992-07-21  |  3.2 KB

  1. Path: sparky!uunet!europa.asd.contel.com!darwin.sura.net!wupost!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!sdd.hp.com!decwrl!decwrl!oracle!unrepliable!bounce
  2. From: wkaufman@us.oracle.com (William Kaufman)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: (Help) dynamic use of sprintf ?
  5. Message-ID: <1992Jul21.015626.24641@oracle.us.oracle.com>
  6. Date: 21 Jul 92 01:56:26 GMT
  7. References: <brself.711345285@hal> <1992Jul17.195250.16522@oracle.us.oracle.com> <12110@goanna.cs.rmit.oz.au>
  8. Sender: usenet@oracle.us.oracle.com (Oracle News Poster)
  9. Organization: Oracle Corporation, Redwood Shores CA
  10. Lines: 56
  11. Nntp-Posting-Host: hqsun2.us.oracle.com
  12. X-Disclaimer: This message was written by an unauthenticated user
  13.               at Oracle Corporation.  The opinions expressed are those
  14.               of the user and not necessarily those of Oracle.
  15.  
  16. In article <12110@goanna.cs.rmit.oz.au> ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe) writes:
  17. ] In article <1992Jul17.195250.16522@oracle.us.oracle.com>, wkaufman@us.oracle.com (William Kaufman) writes:
  18. ] > In article <brself.711345285@hal> brself@hal.gnu.ai.mit.edu (Ben Self) writes:
  19. ] > ]
  20. ] > ]      . using the return value of fprintf () to a file pointer attached
  21. ] > ]        to /dev/null with the same arg format that I pass to sprintf ()
  22. ] > 
  23. ] >     Oooh, icchh!  All the overhead of opening a useless file, writing to
  24. ] > the file every time, closing the file; the malloc()'s, free()'s and
  25. ] > system calls the stdio functions use.  This solution I'd *absolutely*
  26. ] > argue against.
  27. ] I would respectfully point out that there is no need to open and close
  28. ] a file _EACH_TIME_.  
  29.  
  30.     OK, this is the second guy to tell me that.
  31.  
  32.     The "every time", by proper placement of commas, binds with "writing
  33. to the file", not with "opening a useless file".  To be C-ish, this
  34. should be parsed as:
  35.  
  36.         opening(useless_file);
  37.         while (every_time--)
  38.             writing_to(useless_file);
  39.         closing(useless_file);
  40.  
  41.     And there's still fopen()'s malloc() and fclose()'s free (every
  42. implementation I've seen does this for the I/O buffer(s)).  And you can
  43. expect that writing to /dev/null, or whatever the local bitbucket is,
  44. will go all the way down, straight to whatever passes for a kernel, and
  45. all the way up: for N variable-length sprintf()'s, that's N+2 system
  46. calls that do damned little.
  47.  
  48.     I stand by my statement, and hereby proudly reiterate:
  49.  
  50.         Oooh.  Icchh.
  51.  
  52.     (Oh, and your code isn't re-entrant.  Nyah. ;-)
  53.  
  54. ] The best thing of all would be to use a stdio implementation that lets
  55. ] users define their own stuff, like the 4.4BSD one, so that "null files"
  56. ] can be implemented with _no_ mallocs, frees, or system calls, but still
  57. ] look just like other stdio files.
  58.  
  59.     OK, I admit, I haven't seen any BSD internals: maybe it recognizes
  60. the bitbucket as "special" and doesn't have the overhead.  But I really
  61. wouldn't exactly count on that everywhere.
  62.  
  63.     (Maybe I can take some comfort that no one addressed the other
  64. options I put forward,...)
  65.  
  66.                                            -- Bill K.
  67.  
  68. Bill Kaufman,          | "...all conscious species are plastic and
  69. Corporate Lackey       |  all plastic species are conscious."
  70. wkaufman@us.oracle.com |                     -- Yew-Kwang Ng
  71.