From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id SAA25599 for caml-redistribution; Mon, 21 Dec 1998 18:08:48 +0100 (MET) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA19349 for ; Mon, 21 Dec 1998 16:40:42 +0100 (MET) Received: from linc.cis.upenn.edu (LINC.CIS.UPENN.EDU [158.130.12.3]) by nez-perce.inria.fr (8.8.7/8.8.7) with ESMTP id QAA23148 for ; Mon, 21 Dec 1998 16:40:34 +0100 (MET) Received: from codex.cis.upenn.edu (CODEX.CIS.UPENN.EDU [158.130.6.15]) by linc.cis.upenn.edu (8.8.5/8.8.5) with ESMTP id KAA08310; Mon, 21 Dec 1998 10:40:18 -0500 (EST) Received: from [0.0.0.0] (DIALIN0812.UPENN.EDU [128.91.19.44]) by codex.cis.upenn.edu (8.8.5/8.8.5) with ESMTP id KAA18955; Mon, 21 Dec 1998 10:40:16 -0500 (EST) Message-Id: In-Reply-To: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Date: Mon, 21 Dec 1998 10:49:16 -0500 To: Brian Rogoff , caml-list@inria.fr From: Michael Hicks Subject: Re: Subsequence references or substrings in OCaml Sender: weis At 11:27 AM -0800 12/18/98, Brian Rogoff wrote: >Its simple enough to implement subsequence references as a user defined >type in OCaml, as I've done, but I am curious about whether anyone else >who has used similar libraries would find a built-in substring or >subsequence ref library useful. We've done this in our active network implementation to efficiently implement packet switching. The idea is that when the packet comes in, it has an Ethernet header that is stripped off before the packet is processed by the next level in the protocol stack. After doing this, it may turn out that the packet should be forwarded, in which case a new Ethernet header needs to be prepended to the currently headerless packet. By using the substring abstraction, we are able to the prepend efficiently because the space of the old header may be overwritten. The alternative would have us allocate a new buffer with the correct header and then copy the old payload into it. Using substrings is more efficient: there is no wasted copying of data; this is a time-savings in itself, but it also reduces the frequency of GC. Mike ------------------------------------------------------------------------------ Michael Hicks Ph.D. candidate, the University of Pennsylvania mwh@gradient.cis.upenn.edu "I'm looking over A three-leaf clover, That I overlooked be-three ..." -- Bugs Bunny