File: example1.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 (51 lines) | stat: -rw-r--r-- 1,321 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
51
class EXAMPLE1
--
-- Here is a little cookbook for people using very small computers.
-- We suppose here that the goal is to save memory.
--
-- Note: to see how many times the garbage collector is triggered, 
-- keep in mind that you can use the -gc_info flag as in:
--
--    compile -gc_info -boost example1
--
-- Also note that you can run this example under the debugger:
--
--    compile -gc_info -sedb -no_check example1
--

inherit MEMORY;

creation my_main

feature

   my_main is
      local
	 long_loop: INTEGER; foo: STRING;
      do
	 -- Just enable now the `low_memory_strategy' at the beginning 
	 -- of the execution of your main:
	 set_low_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
	    -- Allocate both a fixed size object (of class STRING) and a 
	    -- resizable object (of class NATIVE_ARRAY[CHARACTER]):
	    foo := ("bar").twin;
	    long_loop := long_loop - 1;
	 end;
	 sedb_breakpoint; -- Press key G now !
	 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