/
niceSOFT
/
flex
ОбзорДокументацияВойти
/
niceSOFT
/
flex
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
ДокументацияПоддержка
Политика конфиденциальностиПользовательское соглашениеПолитика использования «cookies»Согласие субъекта персональных данных
2026 ©
flex/
examples/fastwc/
..
Makefile.am

examples/fastwc now fits into automake

24 года назад
README

re-add these files

25 лет назад
mywc.c

Removed deprecated 'register' storage class specifier. clang-3.5.0 now complains about them: warning: 'register' storage class specifier is deprecated [-Wdeprecated-register]

12 лет назад
wc1.l

commit the backwash from the branch merges

25 лет назад
wc2.l

commit the backwash from the branch merges

25 лет назад
wc3.l

commit the backwash from the branch merges

25 лет назад
wc4.l

commit the backwash from the branch merges

25 лет назад
wc5.l

commit the backwash from the branch merges

25 лет назад
README
This directory contains some examples illustrating techniques for extracting
high-performance from flex scanners. Each program implements a simplified
version of the Unix "wc" tool: read text from stdin and print the number of
characters, words, and lines present in the text. All programs were compiled
using gcc (version unavailable, sorry) with the -O flag, and run on a
SPARCstation 1+. The input used was a PostScript file, mainly containing
figures, with the following "wc" counts:
 
lines words characters
214217 635954 2592172
 
 
The basic principles illustrated by these programs are:
 
- match as much text with each rule as possible
- adding rules does not slow you down!
- avoid backing up
 
and the big caveat that comes with them is:
 
- you buy performance with decreased maintainability; make
sure you really need it before applying the above techniques.
 
See the "Performance Considerations" section of flexdoc for more
details regarding these principles.
 
 
The different versions of "wc":
 
mywc.c
a simple but fairly efficient C version
 
wc1.l a naive flex "wc" implementation
 
wc2.l somewhat faster; adds rules to match multiple tokens at once
 
wc3.l faster still; adds more rules to match longer runs of tokens
 
wc4.l fastest; still more rules added; hard to do much better
using flex (or, I suspect, hand-coding)
 
wc5.l identical to wc3.l except one rule has been slightly
shortened, introducing backing-up
 
Timing results (all times in user CPU seconds):
 
program time notes
------- ---- -----
wc1 16.4 default flex table compression (= -Cem)
wc1 6.7 -Cf compression option
/bin/wc 5.8 Sun's standard "wc" tool
mywc 4.6 simple but better C implementation!
wc2 4.6 as good as C implementation; built using -Cf
wc3 3.8 -Cf
wc4 3.3 -Cf
wc5 5.7 -Cf; ouch, backing up is expensive