Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #52718 > unrolled thread
| Started by | trans <transfire@gmail.com> |
|---|---|
| First post | 2016-11-18 10:10 -0800 |
| Last post | 2016-11-22 11:37 +0000 |
| Articles | 20 on this page of 31 — 13 participants |
Back to article view | Back to comp.lang.forth
Data Stack of Just Pointers? trans <transfire@gmail.com> - 2016-11-18 10:10 -0800
Re: Data Stack of Just Pointers? Paul Rubin <no.email@nospam.invalid> - 2016-11-18 10:45 -0800
Re: Data Stack of Just Pointers? Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> - 2016-11-18 20:39 -0500
Re: Data Stack of Just Pointers? minforth@arcor.de - 2016-11-19 03:14 -0800
Re: Data Stack of Just Pointers? hughaguilar96@gmail.com - 2016-11-19 18:26 -0800
Re: Data Stack of Just Pointers? trans <transfire@gmail.com> - 2016-11-19 18:50 -0800
Re: Data Stack of Just Pointers? hughaguilar96@gmail.com - 2016-11-19 19:54 -0800
Re: Data Stack of Just Pointers? trans <transfire@gmail.com> - 2016-11-19 18:52 -0800
Re: Data Stack of Just Pointers? minforth@arcor.de - 2016-11-21 11:46 -0800
Re: Data Stack of Just Pointers? trans <transfire@gmail.com> - 2016-11-19 13:57 -0800
Re: Data Stack of Just Pointers? Jan Coombs <jenfhaomndgfwutc@murmic.plus.com> - 2016-11-19 11:27 +0000
Re: Data Stack of Just Pointers? Ron Aaron <rambamist@gmail.com> - 2016-11-19 18:05 +0200
Re: Data Stack of Just Pointers? anton@mips.complang.tuwien.ac.at (Anton Ertl) - 2016-11-20 13:29 +0000
Re: Data Stack of Just Pointers? Spiros Bousbouras <spibou@gmail.com> - 2016-11-20 15:43 +0000
Re: Data Stack of Just Pointers? Ron Aaron <rambamist@gmail.com> - 2016-11-20 19:06 +0200
Re: Data Stack of Just Pointers? Ron Aaron <rambamist@gmail.com> - 2016-11-21 09:09 +0200
Re: Data Stack of Just Pointers? Paul Rubin <no.email@nospam.invalid> - 2016-11-20 23:17 -0800
Re: Data Stack of Just Pointers? Ron Aaron <rambamist@gmail.com> - 2016-11-21 09:22 +0200
Re: Data Stack of Just Pointers? albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) - 2016-11-21 11:12 +0100
Re: Data Stack of Just Pointers? Ron Aaron <rambamist@gmail.com> - 2016-11-21 12:17 +0200
Re: Data Stack of Just Pointers? Paul Rubin <no.email@nospam.invalid> - 2016-11-21 10:45 -0800
Re: Data Stack of Just Pointers? Ron Aaron <rambamist@gmail.com> - 2016-11-21 21:22 +0200
Re: Data Stack of Just Pointers? Paul Rubin <no.email@nospam.invalid> - 2016-11-21 17:28 -0800
Re: Data Stack of Just Pointers? Ron Aaron <rambamist@gmail.com> - 2016-11-22 06:49 +0200
Re: Data Stack of Just Pointers? Paul Rubin <no.email@nospam.invalid> - 2016-11-21 21:13 -0800
Re: Data Stack of Just Pointers? franck.bensusan@gmail.com - 2016-12-21 13:48 -0800
Re: Data Stack of Just Pointers? Cecil Bayona <cbayona@cbayona.com> - 2016-11-21 13:22 -0600
Re: Data Stack of Just Pointers? "Robert L." <No_spamming@noWhere_7073.org> - 2016-11-22 01:53 +0000
Re: Data Stack of Just Pointers? Cecil Bayona <cbayona@cbayona.com> - 2016-11-21 21:16 -0600
Re: Data Stack of Just Pointers? Ron Aaron <rambamist@gmail.com> - 2016-11-22 07:01 +0200
Re: Data Stack of Just Pointers? "Robert L." <No_spamming@noWhere_7073.org> - 2016-11-22 11:37 +0000
Page 1 of 2 [1] 2 Next page →
| From | trans <transfire@gmail.com> |
|---|---|
| Date | 2016-11-18 10:10 -0800 |
| Subject | Data Stack of Just Pointers? |
| Message-ID | <d8771e5d-b872-4376-a206-ceda23a73c43@googlegroups.com> |
Would a Forth implementation with a data stack that just contains reference pointers have really bad performance? Is that just a stupid idea? I've been working on the design for a typed Forth language, and one idea I've had is to keep things very uniform by having the data stack just be pointers to data in the heap. I know it would effect performance so I was thinking there could also be a kind of "cache stack" to pre-fetch the data that the data stack points to. But maybe that would still be really slow, and not worth it?
[toc] | [next] | [standalone]
| From | Paul Rubin <no.email@nospam.invalid> |
|---|---|
| Date | 2016-11-18 10:45 -0800 |
| Message-ID | <87r368d3u3.fsf@nightsong.com> |
| In reply to | #52718 |
trans <transfire@gmail.com> writes: > Would a Forth implementation with a data stack that just contains > reference pointers have really bad performance? Is that just a stupid > idea? It's not a stupid idea but I wouldn't really think of it as being Forth. It's basically how Lisp, Python, Ruby, and maybe 8th and Oforth work. > I was thinking there could also be a kind of "cache stack" ... But > maybe that would still be really slow, and not worth it? I'd say get the simple implementation working before worrying about optimization. If you do the simplest possible thing there will be a big slowdown compared to traditional Forth, but it will still be fast enough to be useful.
[toc] | [prev] | [next] | [standalone]
| From | Rod Pemberton <NeedNotReplyHere@xrsevnneqk.cem> |
|---|---|
| Date | 2016-11-18 20:39 -0500 |
| Message-ID | <20161118203909.40027cd4@_> |
| In reply to | #52718 |
On Fri, 18 Nov 2016 10:10:57 -0800 (PST) trans <transfire@gmail.com> wrote: > Would a Forth implementation with a data stack that just contains > reference pointers have really bad performance? Each access of an item on the stack would have an extra pointer indirection. This isn't much time in and of itself, but since a Forth interpreter can execute millions of stack operations even for simple things, this will be slower. However, the slowness may still be within acceptable limits. This doesn't take into account the effect of processor caching, which is mentioned below. If the stack data can be of different sizes, your idea would eliminate the need for a linked list or stack frames or contiguous memory for the stack, but this offers no advantage in terms of executing fewer instructions. However, if the processor manages to store some of the pointer stack in the processor's cache, this could be significantly faster than linked lists or stack frames. Having data in cache may be fast enough that the slow-down from the extra pointer indirection is irrelevant too. If the stack data is of a consistent size, like for Forth, I see no point in using pointers. Rod Pemberton
[toc] | [prev] | [next] | [standalone]
| From | minforth@arcor.de |
|---|---|
| Date | 2016-11-19 03:14 -0800 |
| Message-ID | <7e64c7aa-9f8a-4160-b23b-ea0b9077cb80@googlegroups.com> |
| In reply to | #52725 |
> If the stack data is of a consistent size, like for Forth, I see no > point in using pointers. > A very long time ago I experimented with fixed 32 byte long unions as stack elements, so that I could also hold bignums or 32 chars as strings (Forth dictionary names among them). It ran pretty neat.
[toc] | [prev] | [next] | [standalone]
| From | hughaguilar96@gmail.com |
|---|---|
| Date | 2016-11-19 18:26 -0800 |
| Message-ID | <ae32e30d-88db-4045-8b67-30aa4049fff0@googlegroups.com> |
| In reply to | #52732 |
On Saturday, November 19, 2016 at 4:14:26 AM UTC-7, minf...@arcor.de wrote: > > If the stack data is of a consistent size, like for Forth, I see no > > point in using pointers. > > > > A very long time ago I experimented with fixed 32 byte long unions as stack elements, so that I could also hold bignums or 32 chars as strings (Forth dictionary names among them). It ran pretty neat. Well, I'm doing something similar with Straight Forth. I have an 8-byte cell. Pointers are only 4-byte however. So, I can use the cell as a struct to hold two 32-bit values. For example, an xt has a pointer to the cfa and a pointer to the parent function's local-frame (this part is zero if the xt is of a simple word rather than a quotation). Also, a string has a pointer to the string and count. A number is 64-bit with an assumed unity of 2^32. I don't really know what bignums are for. As for strings, I have my string-stack. I don't think it is a good idea to have a cell size that is wider than the register size of the processor --- the modern x86 has a 64-bit register though.
[toc] | [prev] | [next] | [standalone]
| From | trans <transfire@gmail.com> |
|---|---|
| Date | 2016-11-19 18:50 -0800 |
| Message-ID | <5fc73160-deba-471f-b96d-a63b54feba3e@googlegroups.com> |
| In reply to | #52745 |
On Saturday, November 19, 2016 at 9:26:03 PM UTC-5, hughag...@gmail.com wrote: > Well, I'm doing something similar with Straight Forth. I have an 8-byte cell. Pointers are only 4-byte however. So, I can use the cell as a struct to hold two 32-bit values. For example, an xt has a pointer to the cfa and a pointer to the parent function's local-frame (this part is zero if the xt is of a simple word rather than a quotation). Also, a string has a pointer to the string and count. A number is 64-bit with an assumed unity of 2^32. That's an interesting approach. So your quotations have scope? I've been leaning toward 64-bit pointers (on 64 bit chips), even though 32-bit would suffice, just to be future proof. Eventually our computers will have multiple TBs of RAM. > I don't really know what bignums are for. As for strings, I have my string-stack. Bignums are just for arbitrary precision. They can get as big as necessary (e.g. 2^100). > I don't think it is a good idea to have a cell size that is wider than the register size of the processor --- the modern x86 has a 64-bit register though.
[toc] | [prev] | [next] | [standalone]
| From | hughaguilar96@gmail.com |
|---|---|
| Date | 2016-11-19 19:54 -0800 |
| Message-ID | <70ee7a2c-806e-42a8-a1df-ba20bd3cd711@googlegroups.com> |
| In reply to | #52746 |
On Saturday, November 19, 2016 at 7:50:46 PM UTC-7, trans wrote: > On Saturday, November 19, 2016 at 9:26:03 PM UTC-5, hughag...@gmail.com wrote: > > > Well, I'm doing something similar with Straight Forth. I have an 8-byte cell. Pointers are only 4-byte however. So, I can use the cell as a struct to hold two 32-bit values. For example, an xt has a pointer to the cfa and a pointer to the parent function's local-frame (this part is zero if the xt is of a simple word rather than a quotation). Also, a string has a pointer to the string and count. A number is 64-bit with an assumed unity of 2^32. > > That's an interesting approach. So your quotations have scope? Quotations can only execute so long as the parent function remains in scope --- if you execute them after the parent function has exited, the system aborts with a helpful error-message. They are mostly provided to support general-purpose data-structures. You have a HOF that traverses the data-structure and executes the quotation (it is given the xt of the quotation as a parameter by the parent function) for every node in the data-structure. What I have here is a "fat xt" system. This doesn't have the limitations that my rquotations had (only one HOF between the parent function and the quotation, and it must have local variables of its own). So it is a more robust system. As a practical matter though, I can't think of any circumstance in which my rquotations would be inadequate. I don't think that it is useful to have quotations continue to be executable after the parent function has exited. This is done in Scheme etc. --- they have the local variables in the heap and they have GC to get rid of the local variables eventually --- I think this is better done with OOP. > I've been leaning toward 64-bit pointers (on 64 bit chips), even though 32-bit would suffice, just to be future proof. Eventually our computers will have multiple TBs of RAM. Well, Straight Forth is limited to accessing 4GB of RAM (2GB for the heap which are negative pointers and 2GB for the dictionary which are positive pointers). This seems like a lot to me. You could hold a file in virtual memory. You would access it like a file, but you would pretty high speed --- that should be adequate for most applications --- I can't think of anything that needs 64-bit pointers. I suppose games need more than 4GB of RAM --- they have a lot of graphical images --- this is a subject that I have no interest in.
[toc] | [prev] | [next] | [standalone]
| From | trans <transfire@gmail.com> |
|---|---|
| Date | 2016-11-19 18:52 -0800 |
| Message-ID | <6054f3eb-8147-47d1-a721-2134a653c7a4@googlegroups.com> |
| In reply to | #52732 |
On Saturday, November 19, 2016 at 6:14:26 AM UTC-5, minf...@arcor.de wrote: > A very long time ago I experimented with fixed 32 byte long unions as stack elements, so that I could also hold bignums or 32 chars as strings (Forth dictionary names among them). It ran pretty neat. That's crazy! What is that, a 256-bit stack machine? ;)
[toc] | [prev] | [next] | [standalone]
| From | minforth@arcor.de |
|---|---|
| Date | 2016-11-21 11:46 -0800 |
| Message-ID | <47b17e9e-17d6-4073-a60b-d44347428faf@googlegroups.com> |
| In reply to | #52747 |
Am Sonntag, 20. November 2016 03:52:59 UTC+1 schrieb trans: > On Saturday, November 19, 2016 at 6:14:26 AM UTC-5, minf...@arcor.de wrote: > > > A very long time ago I experimented with fixed 32 byte long unions as stack elements, so that I could also hold bignums or 32 chars as strings (Forth dictionary names among them). It ran pretty neat. > > That's crazy! What is that, a 256-bit stack machine? ;) Actually not so crazy. We had many string "atoms" (service commands arriving over teleservice modems) which could be handled easily this way. Forth is not just for number crunching but ideal for DSLs. ;-)
[toc] | [prev] | [next] | [standalone]
| From | trans <transfire@gmail.com> |
|---|---|
| Date | 2016-11-19 13:57 -0800 |
| Message-ID | <49594acf-297b-4ac1-8d60-92b9e6a60612@googlegroups.com> |
| In reply to | #52725 |
On Friday, November 18, 2016 at 8:38:40 PM UTC-5, Rod Pemberton wrote: > > Each access of an item on the stack would have an extra pointer > indirection. This isn't much time in and of itself, but since a Forth > interpreter can execute millions of stack operations even for simple > things, this will be slower. However, the slowness may still be within > acceptable limits. This doesn't take into account the effect of > processor caching, which is mentioned below. > > If the stack data can be of different sizes, your idea would eliminate > the need for a linked list or stack frames or contiguous memory for > the stack, but this offers no advantage in terms of executing fewer > instructions. However, if the processor manages to store some of the > pointer stack in the processor's cache, this could be significantly > faster than linked lists or stack frames. Having data in cache may be > fast enough that the slow-down from the extra pointer indirection is > irrelevant too. > > If the stack data is of a consistent size, like for Forth, I see no > point in using pointers. It wouldn't be too much different from regular Forth. If I don't use a pointer-based stack then the data stack would consist of 1 byte, 2 byte, 4 byte and 8 byte cell sizes (on a 64-bit CPU) and everything else would be pointers (e.g. Array, BigInt, etc.). So that's basically the same as Forth but with two extra cell sizes. I think putting anything bigger than a CPU word on the data stack would be useless (memory management might be easier, but I don't expect that to be much of an issue in my design).
[toc] | [prev] | [next] | [standalone]
| From | Jan Coombs <jenfhaomndgfwutc@murmic.plus.com> |
|---|---|
| Date | 2016-11-19 11:27 +0000 |
| Message-ID | <20161119112719.65fd7393@HP-6550b> |
| In reply to | #52718 |
On Fri, 18 Nov 2016 10:10:57 -0800 (PST) trans <transfire@gmail.com> wrote: > Would a Forth implementation with a data stack that just > contains reference pointers have really bad performance? Is > that just a stupid idea? For software implementation most likely yes. If the indirection is build in hardware then maybe not. Jan Coombs
[toc] | [prev] | [next] | [standalone]
| From | Ron Aaron <rambamist@gmail.com> |
|---|---|
| Date | 2016-11-19 18:05 +0200 |
| Message-ID | <o0pt79$13e$1@dont-email.me> |
| In reply to | #52718 |
On 18/11/2016 20:10, trans wrote: > Would a Forth implementation with a data stack that just contains reference pointers have really bad performance? Is that just a stupid idea? Not necessarily. 8th uses just this model, and the performance is decent. > I've been working on the design for a typed Forth language, and one idea I've had is to keep things very uniform by having the data stack just be pointers to data in the heap. I know it would effect performance so I was thinking there could also be a kind of "cache stack" to pre-fetch the data that the data stack points to. But maybe that would still be really slow, and not worth it? That's the thought process I went through designing 8th. The stack just contains pointers to items. 8th does do reference-counting, which pretty much requires this model.
[toc] | [prev] | [next] | [standalone]
| From | anton@mips.complang.tuwien.ac.at (Anton Ertl) |
|---|---|
| Date | 2016-11-20 13:29 +0000 |
| Message-ID | <2016Nov20.142921@mips.complang.tuwien.ac.at> |
| In reply to | #52718 |
trans <transfire@gmail.com> writes:
>Would a Forth implementation with a data stack that just contains reference=
> pointers have really bad performance? Is that just a stupid idea?
Given that it's a very common approach in many language
implementations (e.g., Lisp, or the object part of Java), and for good
reasons, it's not a stupid idea. It has significant performance cost,
but despite that cost, the designers and implementors of these
languages have chosen this approach for the general case. They then
try to reduce the cost in various common cases, with mixed success;
the cost is known as boxing and unboxing, and searching for these
terms should give you some literature on the performance effects of
this approach and how to reduce the cost.
> I was think=
>ing there could also be a kind of "cache stack" to pre-fetch the data that =
>the data stack points to.
I expect that the data on the stack is in the data cache of the CPU,
because it was accessed recently (otherwise, how does it get on the
stack); so I don't expect prefetching to help for these cases. If you
mean something else, it's unclear what you mean.
- anton
--
M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
New standard: http://www.forth200x.org/forth200x.html
EuroForth 2016: http://www.euroforth.org/ef16/
[toc] | [prev] | [next] | [standalone]
| From | Spiros Bousbouras <spibou@gmail.com> |
|---|---|
| Date | 2016-11-20 15:43 +0000 |
| Message-ID | <MwjYz.341077$IO.218820@fx45.am4> |
| In reply to | #52761 |
On Sun, 20 Nov 2016 13:29:21 GMT anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote: > trans <transfire@gmail.com> writes: > >Would a Forth implementation with a data stack that just contains reference > > pointers have really bad performance? Is that just a stupid idea? > > Given that it's a very common approach in many language > implementations (e.g., Lisp, or the object part of Java), and for good > reasons, it's not a stupid idea. It has significant performance cost, > but despite that cost, the designers and implementors of these > languages have chosen this approach for the general case. They then > try to reduce the cost in various common cases, with mixed success; > the cost is known as boxing and unboxing, and searching for these > terms should give you some literature on the performance effects of > this approach and how to reduce the cost. Two such references are blogs.janestreet.com/what-is-gained-and-lost-with-63-bit-integers and ocaml.org/learn/tutorials/performance_and_profiling.html especially the part starting with "The representation of integers, tag bits, heap-allocated values" .
[toc] | [prev] | [next] | [standalone]
| From | Ron Aaron <rambamist@gmail.com> |
|---|---|
| Date | 2016-11-20 19:06 +0200 |
| Message-ID | <o0sl5s$k32$1@dont-email.me> |
| In reply to | #52761 |
On 20/11/2016 15:29, Anton Ertl wrote: > Given that it's a very common approach in many language > implementations (e.g., Lisp, or the object part of Java), and for good > reasons, it's not a stupid idea. It has significant performance cost, Indeed, and yes; in particular, it makes optimizing in the manner of native C compilers (for example) very difficult. > but despite that cost, the designers and implementors of these > languages have chosen this approach for the general case. They then > try to reduce the cost in various common cases, with mixed success; > the cost is known as boxing and unboxing, and searching for these > terms should give you some literature on the performance effects of > this approach and how to reduce the cost. Hmm. I don't do boxing and unboxing in 8th (at least, not as I understand those terms). That's because in general, the values are not primitives. Case in point: numbers in 8th can be integers, floating point, big-integers or big-floating-point. That's convenient for the user, not so much for me as the implementor. > I expect that the data on the stack is in the data cache of the CPU, > because it was accessed recently (otherwise, how does it get on the > stack); so I don't expect prefetching to help for these cases. If you > mean something else, it's unclear what you mean. The stack is mostly in the data-cache (as far as 8th goes, that is). But the items pointed to in the stack are allocated from their respective pools. However, that gives some locality of reference in many common cases, which makes the performance reasonably good.
[toc] | [prev] | [next] | [standalone]
| From | Ron Aaron <rambamist@gmail.com> |
|---|---|
| Date | 2016-11-21 09:09 +0200 |
| Message-ID | <o0u6jf$ppr$1@dont-email.me> |
| In reply to | #52767 |
On 11/20/2016 19:06, Ron Aaron wrote: > > > On 20/11/2016 15:29, Anton Ertl wrote: > >> Given that it's a very common approach in many language >> implementations (e.g., Lisp, or the object part of Java), and for good >> reasons, it's not a stupid idea. It has significant performance cost, > > Indeed, and yes; in particular, it makes optimizing in the manner of > native C compilers (for example) very difficult. Though as a curiosity, I created a C++ version of my "FIX parsing" benchmark using the std C++ libraries. To my surprise, 8th outperformed unoptimized C++ by quite a lot, and was pretty competitive even with "-O2" optimized C++ (for reference, the 8th version took 2.67 sec while the optimized C++ took 2.36, and unoptimized C++ took 4.14).
[toc] | [prev] | [next] | [standalone]
| From | Paul Rubin <no.email@nospam.invalid> |
|---|---|
| Date | 2016-11-20 23:17 -0800 |
| Message-ID | <87h971b8u1.fsf@nightsong.com> |
| In reply to | #52784 |
Ron Aaron <rambamist@gmail.com> writes: > To my surprise, 8th outperformed unoptimized C++ by quite a lot Can you post the code?
[toc] | [prev] | [next] | [standalone]
| From | Ron Aaron <rambamist@gmail.com> |
|---|---|
| Date | 2016-11-21 09:22 +0200 |
| Message-ID | <o0u7c1$rod$1@dont-email.me> |
| In reply to | #52786 |
On 11/21/2016 09:17, Paul Rubin wrote: > Ron Aaron <rambamist@gmail.com> writes: >> To my surprise, 8th outperformed unoptimized C++ by quite a lot > > Can you post the code? Both the C++ and the 8th code are here: http://8th-dev.com/forum/index.php?topic=1093.msg5965#msg5965
[toc] | [prev] | [next] | [standalone]
| From | albert@cherry.spenarnc.xs4all.nl (Albert van der Horst) |
|---|---|
| Date | 2016-11-21 11:12 +0100 |
| Message-ID | <o0uham$8bj$1@cherry.spenarnc.xs4all.nl> |
| In reply to | #52784 |
In article <o0u6jf$ppr$1@dont-email.me>, Ron Aaron <rambamist@gmail.com> wrote: > > >On 11/20/2016 19:06, Ron Aaron wrote: >> >> >> On 20/11/2016 15:29, Anton Ertl wrote: >> >>> Given that it's a very common approach in many language >>> implementations (e.g., Lisp, or the object part of Java), and for good >>> reasons, it's not a stupid idea. It has significant performance cost, >> >> Indeed, and yes; in particular, it makes optimizing in the manner of >> native C compilers (for example) very difficult. > >Though as a curiosity, I created a C++ version of my "FIX parsing" >benchmark using the std C++ libraries. > >To my surprise, 8th outperformed unoptimized C++ by quite a lot, and was >pretty competitive even with "-O2" optimized C++ (for reference, the 8th >version took 2.67 sec while the optimized C++ took 2.36, and unoptimized >C++ took 4.14). I presume that some form of optimisation was done in 8th? What was the fastest C++ could do? Groetjes Albert -- Albert van der Horst, UTRECHT,THE NETHERLANDS Economic growth -- being exponential -- ultimately falters. albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst
[toc] | [prev] | [next] | [standalone]
| From | Ron Aaron <rambamist@gmail.com> |
|---|---|
| Date | 2016-11-21 12:17 +0200 |
| Message-ID | <o0uhjt$qgg$1@dont-email.me> |
| In reply to | #52788 |
On 11/21/2016 12:12, Albert van der Horst wrote: > I presume that some form of optimisation was done in 8th? > What was the fastest C++ could do? The 8th code was just simple code, nothing optimized. The 2.36 was g++ -O2, that's the fastest it did. This was relying on the std library, so possibly using boost etc. might be faster.
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | comp.lang.forth
csiph-web