File: example2.e

package info (click to toggle)
smarteiffel 1.1-11
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 12,288 kB
  • ctags: 40,785
  • sloc: ansic: 35,791; lisp: 4,036; sh: 1,783; java: 895; ruby: 613; python: 209; makefile: 115; csh: 78; cpp: 50
file content (50 lines) | stat: -rw-r--r-- 1,362 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class EXAMPLE2
--
-- Here is a little cookbook for people using very large computers.
-- We suppose here that the goal is to minimize execution time (i.e.
-- we suppose now that you have a _lot_ of available memory).
--
-- Note: it is usually interesting to compare the execution time of this
-- example with/without the SmartEiffel garbage collector:
--    compile -boost        example2
--    compile -boost -no_gc example2
--
-- Hint: when the -no_gc flag is used, there is one C malloc for 
-- each object.
--

inherit MEMORY;

creation my_main

feature

   my_main is
      local
	 long_loop: INTEGER; foo: STRING;
      do
	 -- At the beginning of the execution of your main procedure, 
	 -- just select the `high_memory_strategy':
	 -- Here, we suppose that you have a _LOT_ of memory and our 
	 -- prediction is to push ceils at the maximum:
	 set_default_memory_strategy;
	 from
	    long_loop := 50_000;
	    -- Please uncomment the following line to have more time 
	    -- to check memory consumption:
	    -- long_loop := 10_000_000;
	 until
	    long_loop <= 0
	 loop
	    foo := ("bar").twin;
	    long_loop := long_loop - 1;
	 end;
	 io.put_string("Collector counter: ");
	 io.put_integer(collector_counter);
	 io.put_new_line;
	 io.put_string("Allocated bytes of memory: ");
	 io.put_integer(allocated_bytes);
	 io.put_new_line;
      end;

end