Are Unix tools just slow?

But the difference is the difference between accessing one file and
accessing every file. That’s tremendous.

···

On 6/17/02 11:36 AM, “Christopher Browne” cbbrowne@acm.org wrote:

If an SQL database is being used, then perhaps the filesystem
doesn’t have to get traversed, but that certainly doesn’t eliminate
the need to traverse the database.


War is God’s way of teaching Americans geography.
-Ambrose Bierce, writer(1842-1914)

We seem to have come full circle. I started these threads by asking whether
find and similar tools like stat sacrificed speed for portability across
file systems or whether they were sometimes optimized for particular file
systems. It seems that there my be optimized tools but they aren’t called
‘find’, ‘stat’ or what have you.

So the question for Ruby is whether to live with what we have, add methods
to use the faster tools when they are available, or develop something fast
and portable using a database and FAM.

···

On 6/17/02 11:35 AM, “Josh Huber” huber@alum.wpi.edu wrote:

Chris Gehlker gehlker@fastq.com writes:

Guys, I said it was HFS+. The file system is a B*-tree in
memory. And the code doesn’t just walk it, it searches it, recording
the path for files which match the search criteria. In this case the
search criterion is simply whether the user running the search has
execute permission for the file, either because she owns it and the
owner execute bit is set or because she is a member of the owner’s
group and the group execute bit is set or because anyone can execute
the file.

Right, but find does not know/care what the filesystem type is –
using the regular user-mode file i/o interface isn’t going to give you
access to the B-trees. You could perhaps write an extention to find
which uses this API, but it would be MacOS specific. (or rather,
filesystem specific)

It’s not that the tools are slow, it’s that find does not use any sort
of API which allows for direct access to the filesystem information.


Laws are the spider’s webs which, if anything small falls into them they
ensnare it, but large things break through and escape. -Solon, statesman
(c. 638-c558 BCE)

i have installed it.
it may not be called gcc though?

What OS are you on? If you are on a Linux box, it will be called gcc
for sure.

···

On Sat, 2002-06-15 at 00:34, ccos wrote:

On Saturday, June 15, 2002, at 02:26 PM, nobu.nokada@softhome.net wrote:

Hi,

At Sat, 15 Jun 2002 12:45:21 +0900, > > ccos wrote:

make[1]: gcc: Command not found

You haven’t installed C compiler.


Nobu Nakada

ok i still get errors, see below.
could anybody point me towards some
docs which describe what
is actually going on with all of this?
i don’t know how to read any of this,
and also there is no doco that i can see for
the actual opengl code that i’m using,
(if/what i need installed beforehand, etc…)
at least not in english. the README is ext .EUC. i am guessing
this is because it is in japanese?
thanks much

p.s. since this failed a couple of times, do i need to
clean up anywhere?

[localhost:DLs/compressed/opengl] cmckeon% ruby extconf.rb
checking for () in -lGL… yes
checking for () in -lGLU… yes
creating Makefile
checking for XAllowDeviceEvents() in -lXi… yes
checking for XMITMiscGetBugMode() in -lXext… yes
checking for XmuAddCloseDisplayHook() in -lXmu… yes
checking for () in -lglut… yes
creating Makefile
[localhost:DLs/compressed/opengl] cmckeon% make
Now Making glut extend module
gcc -fno-common -no-cpp-precomp -flat_namespace -pipe -no-precomp -I.
-I. -I/usr/local/lib/ruby/1.6/powerpc-darwin5.3 -I.
-I/usr/local/include -I/usr/X11R6/include -c -o glut.o glut.c
glut.c:8: GL/glut.h: No such file or directory
glut.c: In function glut_SetColor': glut.c:817:GLfloat’ undeclared (first use in this function)
glut.c:817: (Each undeclared identifier is reported only once
glut.c:817: for each function it appears in.)
glut.c:817: parse error before red' glut.c:821:red’ undeclared (first use in this function)
glut.c:821: parse error before rb_num2dbl' glut.c:822:green’ undeclared (first use in this function)
glut.c:822: parse error before rb_num2dbl' glut.c:823:blue’ undeclared (first use in this function)
glut.c:823: parse error before rb_num2dbl' glut.c: In functionglut_GetColor’:
glut.c:833: GLfloat' undeclared (first use in this function) glut.c:833: parse error beforeret’
glut.c:836: ret' undeclared (first use in this function) glut.c:836: parse error beforeglutGetColor’
glut.c: In function glut_Get': glut.c:854:GLenum’ undeclared (first use in this function)
glut.c:854: parse error before type' glut.c:856:type’ undeclared (first use in this function)
glut.c: In function glut_DeviceGet': glut.c:864:GLenum’ undeclared (first use in this function)
glut.c:864: parse error before type' glut.c:866:type’ undeclared (first use in this function)
glut.c: In function glut_WireSphere': glut.c:983:GLdouble’ undeclared (first use in this function)
glut.c:983: parse error before radius' glut.c:984:GLint’ undeclared (first use in this function)
glut.c:986: radius' undeclared (first use in this function) glut.c:986: parse error beforerb_num2dbl’
glut.c:987: slices' undeclared (first use in this function) glut.c:988:stacks’ undeclared (first use in this function)
glut.c: In function glut_SolidSphere': glut.c:996:GLdouble’ undeclared (first use in this function)
glut.c:996: parse error before radius' glut.c:997:GLint’ undeclared (first use in this function)
glut.c:999: radius' undeclared (first use in this function) glut.c:999: parse error beforerb_num2dbl’
glut.c:1000: slices' undeclared (first use in this function) glut.c:1001:stacks’ undeclared (first use in this function)
glut.c: In function glut_WireCone': glut.c:1009:GLdouble’ undeclared (first use in this function)
glut.c:1009: parse error before base' glut.c:1011:GLint’ undeclared (first use in this function)
glut.c:1013: base' undeclared (first use in this function) glut.c:1013: parse error beforerb_num2dbl’
glut.c:1014: height' undeclared (first use in this function) glut.c:1014: parse error beforerb_num2dbl’
glut.c:1015: slices' undeclared (first use in this function) glut.c:1016:stacks’ undeclared (first use in this function)
glut.c: In function glut_SolidCone': glut.c:1024:GLdouble’ undeclared (first use in this function)
glut.c:1024: parse error before base' glut.c:1026:GLint’ undeclared (first use in this function)
glut.c:1028: base' undeclared (first use in this function) glut.c:1028: parse error beforerb_num2dbl’
glut.c:1029: height' undeclared (first use in this function) glut.c:1029: parse error beforerb_num2dbl’
glut.c:1030: slices' undeclared (first use in this function) glut.c:1031:stacks’ undeclared (first use in this function)
glut.c: In function glut_WireCube': glut.c:1039:GLdouble’ undeclared (first use in this function)
glut.c:1039: parse error before size' glut.c:1040:size’ undeclared (first use in this function)
glut.c:1040: parse error before rb_num2dbl' glut.c: In functionglut_SolidCube’:
glut.c:1048: GLdouble' undeclared (first use in this function) glut.c:1048: parse error beforesize’
glut.c:1049: size' undeclared (first use in this function) glut.c:1049: parse error beforerb_num2dbl’
glut.c: In function glut_WireTorus': glut.c:1057:GLdouble’ undeclared (first use in this function)
glut.c:1057: parse error before innerRadius' glut.c:1059:GLint’ undeclared (first use in this function)
glut.c:1061: innerRadius' undeclared (first use in this function) glut.c:1061: parse error beforerb_num2dbl’
glut.c:1062: outerRadius' undeclared (first use in this function) glut.c:1062: parse error beforerb_num2dbl’
glut.c:1063: sides' undeclared (first use in this function) glut.c:1064:rings’ undeclared (first use in this function)
glut.c: In function glut_SolidTorus': glut.c:1072:GLdouble’ undeclared (first use in this function)
glut.c:1072: parse error before innerRadius' glut.c:1074:GLint’ undeclared (first use in this function)
glut.c:1076: innerRadius' undeclared (first use in this function) glut.c:1076: parse error beforerb_num2dbl’
glut.c:1077: outerRadius' undeclared (first use in this function) glut.c:1077: parse error beforerb_num2dbl’
glut.c:1078: sides' undeclared (first use in this function) glut.c:1079:rings’ undeclared (first use in this function)
glut.c: In function glut_WireTeapot': glut.c:1101:GLdouble’ undeclared (first use in this function)
glut.c:1101: parse error before size' glut.c:1102:size’ undeclared (first use in this function)
glut.c:1102: parse error before rb_num2dbl' glut.c: In functionglut_SolidTeapot’:
glut.c:1110: GLdouble' undeclared (first use in this function) glut.c:1110: parse error beforesize’
glut.c:1111: size' undeclared (first use in this function) glut.c:1111: parse error beforerb_num2dbl’
glut.c: In function Init_glut': glut.c:1235:glut_InitDisplayString’ undeclared (first use in this
function)
glut.c:1255: glut_FullScreen' undeclared (first use in this function) glut.c:1256:glut_SetCurcor’ undeclared (first use in this function)
glut.c:1257: glut_WarpPointer' undeclared (first use in this function) glut.c:1258:glut_EstablishOverlay’ undeclared (first use in this
function)
glut.c:1259: glut_RemoveOverlay' undeclared (first use in this function) glut.c:1260:glut_UseLayer’ undeclared (first use in this function)
glut.c:1261: glut_PostOverlayRedisplay' undeclared (first use in this function) glut.c:1262:glut_ShowOverlay’ undeclared (first use in this function)
glut.c:1263: glut_HideOverlay' undeclared (first use in this function) glut.c:1281:glut_ExtensionSupported’ undeclared (first use in this
function)
glut.c:1282: glut_GetModifiers' undeclared (first use in this function) glut.c:1283:glut_LayerGet’ undeclared (first use in this function)
glut.c:1288: glut_BitmapLength' undeclared (first use in this function) glut.c:1289:glut_StrokeLength’ undeclared (first use in this function)
glut.c:1308: glut_VideoResizeGet' undeclared (first use in this function) glut.c:1309:glut_SetupVideoResizing’ undeclared (first use in this
function)
glut.c:1310: glut_StopVideoResizing' undeclared (first use in this function) glut.c:1311:glut_VideoResize’ undeclared (first use in this function)
glut.c:1312: glut_VideoPan' undeclared (first use in this function) glut.c:1313:glut_ReportErrors’ undeclared (first use in this function)
glut.c:1317: GLUT_API_VERSION' undeclared (first use in this function) glut.c:1318:GLUT_XLIB_IMPLEMENTATION’ undeclared (first use in this
function)
glut.c:1319: GLUT_RGB' undeclared (first use in this function) glut.c:1320:GLUT_RGBA’ undeclared (first use in this function)
glut.c:1321: GLUT_INDEX' undeclared (first use in this function) glut.c:1322:GLUT_SINGLE’ undeclared (first use in this function)
glut.c:1323: GLUT_DOUBLE' undeclared (first use in this function) glut.c:1324:GLUT_ACCUM’ undeclared (first use in this function)
glut.c:1325: GLUT_ALPHA' undeclared (first use in this function) glut.c:1326:GLUT_DEPTH’ undeclared (first use in this function)
glut.c:1327: GLUT_STENCIL' undeclared (first use in this function) glut.c:1328:GLUT_MULTISAMPLE’ undeclared (first use in this function)
glut.c:1329: GLUT_STEREO' undeclared (first use in this function) glut.c:1330:GLUT_LUMINANCE’ undeclared (first use in this function)
glut.c:1331: GLUT_LEFT_BUTTON' undeclared (first use in this function) glut.c:1332:GLUT_MIDDLE_BUTTON’ undeclared (first use in this function)
glut.c:1333: GLUT_RIGHT_BUTTON' undeclared (first use in this function) glut.c:1334:GLUT_DOWN’ undeclared (first use in this function)
glut.c:1335: GLUT_UP' undeclared (first use in this function) glut.c:1336:GLUT_KEY_F1’ undeclared (first use in this function)
glut.c:1337: GLUT_KEY_F2' undeclared (first use in this function) glut.c:1338:GLUT_KEY_F3’ undeclared (first use in this function)
glut.c:1339: GLUT_KEY_F4' undeclared (first use in this function) glut.c:1340:GLUT_KEY_F5’ undeclared (first use in this function)
glut.c:1341: GLUT_KEY_F6' undeclared (first use in this function) glut.c:1342:GLUT_KEY_F7’ undeclared (first use in this function)
glut.c:1343: GLUT_KEY_F8' undeclared (first use in this function) glut.c:1344:GLUT_KEY_F9’ undeclared (first use in this function)
glut.c:1345: GLUT_KEY_F10' undeclared (first use in this function) glut.c:1346:GLUT_KEY_F11’ undeclared (first use in this function)
glut.c:1347: GLUT_KEY_F12' undeclared (first use in this function) glut.c:1348:GLUT_KEY_LEFT’ undeclared (first use in this function)
glut.c:1349: GLUT_KEY_UP' undeclared (first use in this function) glut.c:1350:GLUT_KEY_RIGHT’ undeclared (first use in this function)
glut.c:1351: GLUT_KEY_DOWN' undeclared (first use in this function) glut.c:1352:GLUT_KEY_PAGE_UP’ undeclared (first use in this function)
glut.c:1353: GLUT_KEY_PAGE_DOWN' undeclared (first use in this function) glut.c:1354:GLUT_KEY_HOME’ undeclared (first use in this function)
glut.c:1355: GLUT_KEY_END' undeclared (first use in this function) glut.c:1356:GLUT_KEY_INSERT’ undeclared (first use in this function)
glut.c:1357: GLUT_LEFT' undeclared (first use in this function) glut.c:1358:GLUT_ENTERED’ undeclared (first use in this function)
glut.c:1359: GLUT_MENU_NOT_IN_USE' undeclared (first use in this function) glut.c:1360:GLUT_MENU_IN_USE’ undeclared (first use in this function)
glut.c:1361: GLUT_NOT_VISIBLE' undeclared (first use in this function) glut.c:1362:GLUT_VISIBLE’ undeclared (first use in this function)
glut.c:1363: GLUT_HIDDEN' undeclared (first use in this function) glut.c:1364:GLUT_FULLY_RETAINED’ undeclared (first use in this
function)
glut.c:1365: GLUT_PARTIALLY_RETAINED' undeclared (first use in this function) glut.c:1366:GLUT_FULLY_COVERED’ undeclared (first use in this function)
glut.c:1367: GLUT_RED' undeclared (first use in this function) glut.c:1368:GLUT_GREEN’ undeclared (first use in this function)
glut.c:1369: GLUT_BLUE' undeclared (first use in this function) glut.c:1370:GLUT_WINDOW_X’ undeclared (first use in this function)
glut.c:1371: GLUT_WINDOW_Y' undeclared (first use in this function) glut.c:1372:GLUT_WINDOW_WIDTH’ undeclared (first use in this function)
glut.c:1373: GLUT_WINDOW_HEIGHT' undeclared (first use in this function) glut.c:1374:GLUT_WINDOW_BUFFER_SIZE’ undeclared (first use in this
function)
glut.c:1375: GLUT_WINDOW_STENCIL_SIZE' undeclared (first use in this function) glut.c:1376:GLUT_WINDOW_DEPTH_SIZE’ undeclared (first use in this
function)
glut.c:1377: GLUT_WINDOW_RED_SIZE' undeclared (first use in this function) glut.c:1378:GLUT_WINDOW_GREEN_SIZE’ undeclared (first use in this
function)
glut.c:1379: GLUT_WINDOW_BLUE_SIZE' undeclared (first use in this function) glut.c:1380:GLUT_WINDOW_ALPHA_SIZE’ undeclared (first use in this
function)
glut.c:1381: GLUT_WINDOW_ACCUM_RED_SIZE' undeclared (first use in this function) glut.c:1382:GLUT_WINDOW_ACCUM_GREEN_SIZE’ undeclared (first use in
this function)
glut.c:1383: GLUT_WINDOW_ACCUM_BLUE_SIZE' undeclared (first use in this function) glut.c:1384:GLUT_WINDOW_ACCUM_ALPHA_SIZE’ undeclared (first use in
this function)
glut.c:1385: GLUT_WINDOW_DOUBLEBUFFER' undeclared (first use in this function) glut.c:1386:GLUT_WINDOW_RGBA’ undeclared (first use in this function)
glut.c:1387: GLUT_WINDOW_PARENT' undeclared (first use in this function) glut.c:1388:GLUT_WINDOW_NUM_CHILDREN’ undeclared (first use in this
function)
glut.c:1389: GLUT_WINDOW_COLORMAP_SIZE' undeclared (first use in this function) glut.c:1390:GLUT_WINDOW_NUM_SAMPLES’ undeclared (first use in this
function)
glut.c:1391: GLUT_WINDOW_STEREO' undeclared (first use in this function) glut.c:1392:GLUT_WINDOW_CURSOR’ undeclared (first use in this function)
glut.c:1393: GLUT_SCREEN_WIDTH' undeclared (first use in this function) glut.c:1394:GLUT_SCREEN_HEIGHT’ undeclared (first use in this function)
glut.c:1395: GLUT_SCREEN_WIDTH_MM' undeclared (first use in this function) glut.c:1396:GLUT_SCREEN_HEIGHT_MM’ undeclared (first use in this
function)
glut.c:1397: GLUT_MENU_NUM_ITEMS' undeclared (first use in this function) glut.c:1398:GLUT_DISPLAY_MODE_POSSIBLE’ undeclared (first use in this
function)
glut.c:1399: GLUT_INIT_WINDOW_X' undeclared (first use in this function) glut.c:1400:GLUT_INIT_WINDOW_Y’ undeclared (first use in this function)
glut.c:1401: GLUT_INIT_WINDOW_WIDTH' undeclared (first use in this function) glut.c:1402:GLUT_INIT_WINDOW_HEIGHT’ undeclared (first use in this
function)
glut.c:1403: GLUT_INIT_DISPLAY_MODE' undeclared (first use in this function) glut.c:1404:GLUT_ELAPSED_TIME’ undeclared (first use in this function)
glut.c:1405: GLUT_HAS_KEYBOARD' undeclared (first use in this function) glut.c:1406:GLUT_HAS_MOUSE’ undeclared (first use in this function)
glut.c:1407: GLUT_HAS_SPACEBALL' undeclared (first use in this function) glut.c:1408:GLUT_HAS_DIAL_AND_BUTTON_BOX’ undeclared (first use in
this function)
glut.c:1409: GLUT_HAS_TABLET' undeclared (first use in this function) glut.c:1410:GLUT_NUM_MOUSE_BUTTONS’ undeclared (first use in this
function)
glut.c:1411: GLUT_NUM_SPACEBALL_BUTTONS' undeclared (first use in this function) glut.c:1412:GLUT_NUM_BUTTON_BOX_BUTTONS’ undeclared (first use in this
function)
glut.c:1413: GLUT_NUM_DIALS' undeclared (first use in this function) glut.c:1414:GLUT_NUM_TABLET_BUTTONS’ undeclared (first use in this
function)
glut.c:1415: GLUT_OVERLAY_POSSIBLE' undeclared (first use in this function) glut.c:1416:GLUT_LAYER_IN_USE’ undeclared (first use in this function)
glut.c:1417: GLUT_HAS_OVERLAY' undeclared (first use in this function) glut.c:1418:GLUT_TRANSPARENT_INDEX’ undeclared (first use in this
function)
glut.c:1419: GLUT_NORMAL_DAMAGED' undeclared (first use in this function) glut.c:1420:GLUT_OVERLAY_DAMAGED’ undeclared (first use in this
function)
glut.c:1421: GLUT_VIDEO_RESIZE_POSSIBLE' undeclared (first use in this function) glut.c:1422:GLUT_VIDEO_RESIZE_IN_USE’ undeclared (first use in this
function)
glut.c:1423: GLUT_VIDEO_RESIZE_X_DELTA' undeclared (first use in this function) glut.c:1424:GLUT_VIDEO_RESIZE_Y_DELTA’ undeclared (first use in this
function)
glut.c:1425: GLUT_VIDEO_RESIZE_WIDTH_DELTA' undeclared (first use in this function) glut.c:1426:GLUT_VIDEO_RESIZE_HEIGHT_DELTA’ undeclared (first use in
this function)
glut.c:1427: GLUT_VIDEO_RESIZE_X' undeclared (first use in this function) glut.c:1428:GLUT_VIDEO_RESIZE_Y’ undeclared (first use in this
function)
glut.c:1429: GLUT_VIDEO_RESIZE_WIDTH' undeclared (first use in this function) glut.c:1430:GLUT_VIDEO_RESIZE_HEIGHT’ undeclared (first use in this
function)
glut.c:1431: GLUT_NORMAL' undeclared (first use in this function) glut.c:1432:GLUT_OVERLAY’ undeclared (first use in this function)
glut.c:1433: GLUT_ACTIVE_SHIFT' undeclared (first use in this function) glut.c:1434:GLUT_ACTIVE_CTRL’ undeclared (first use in this function)
glut.c:1435: GLUT_ACTIVE_ALT' undeclared (first use in this function) glut.c:1436:GLUT_CURSOR_RIGHT_ARROW’ undeclared (first use in this
function)
glut.c:1437: GLUT_CURSOR_LEFT_ARROW' undeclared (first use in this function) glut.c:1438:GLUT_CURSOR_INFO’ undeclared (first use in this function)
glut.c:1439: GLUT_CURSOR_DESTROY' undeclared (first use in this function) glut.c:1440:GLUT_CURSOR_HELP’ undeclared (first use in this function)
glut.c:1441: GLUT_CURSOR_CYCLE' undeclared (first use in this function) glut.c:1442:GLUT_CURSOR_SPRAY’ undeclared (first use in this function)
glut.c:1443: GLUT_CURSOR_WAIT' undeclared (first use in this function) glut.c:1444:GLUT_CURSOR_TEXT’ undeclared (first use in this function)
glut.c:1445: GLUT_CURSOR_CROSSHAIR' undeclared (first use in this function) glut.c:1446:GLUT_CURSOR_UP_DOWN’ undeclared (first use in this
function)
glut.c:1447: GLUT_CURSOR_LEFT_RIGHT' undeclared (first use in this function) glut.c:1448:GLUT_CURSOR_TOP_SIDE’ undeclared (first use in this
function)
glut.c:1449: GLUT_CURSOR_BOTTOM_SIDE' undeclared (first use in this function) glut.c:1450:GLUT_CURSOR_LEFT_SIDE’ undeclared (first use in this
function)
glut.c:1451: GLUT_CURSOR_RIGHT_SIDE' undeclared (first use in this function) glut.c:1452:GLUT_CURSOR_TOP_LEFT_CORNER’ undeclared (first use in this
function)
glut.c:1453: GLUT_CURSOR_TOP_RIGHT_CORNER' undeclared (first use in this function) glut.c:1454:GLUT_CURSOR_BOTTOM_RIGHT_CORNER’ undeclared (first use in
this function)
glut.c:1455: GLUT_CURSOR_BOTTOM_LEFT_CORNER' undeclared (first use in this function) glut.c:1456:GLUT_CURSOR_INHERIT’ undeclared (first use in this
function)
glut.c:1457: GLUT_CURSOR_NONE' undeclared (first use in this function) glut.c:1458:GLUT_CURSOR_FULL_CROSSHAIR’ undeclared (first use in this
function)
glut.c: At top level:
glut.c:158: warning: glut_SpecialFuncCallback' used but never defined glut.c:159: warning:glut_SpaceballMotionFuncCallback’ used but never
defined
glut.c:160: warning: glut_SpaceballRotateFuncCallback' used but never defined glut.c:161: warning:glut_SpaceballButtonFuncCallback’ used but never
defined
glut.c:162: warning: glut_ButtonBoxFuncCallback' used but never defined glut.c:163: warning:glut_DialsFuncCallback’ used but never defined
glut.c:164: warning: glut_TabletMotionFuncCallback' used but never defined glut.c:165: warning:glut_TabletButtonFuncCallback’ used but never
defined
glut.c:169: warning: glut_OverlayDisplayFuncCallback' used but never defined glut.c:170: warning:glut_WindowStatusFuncCallback’ used but never
defined
make[1]: *** [glut.o] Error 1
make: *** [glut.bundle] Error 2

Rick Bradley wrote:

BUGS
The syntax is painful.

BUGS
The special characters used by find are also special characters
[…]
Yours must be more recent than mine (as that seems to be a more
succint way of saying the above). :wink:

Login @
http://museum.sysun.com/museum/u7conn.html
or check
http://cm.bell-labs.com/7thEdMan/

Tobi

···


http://www.pinkjuice.com/

According to that theory I should be able to improve my file system
performance by using a filesystem that uses a single (big) file in
(another) filesystem.

hmm :slight_smile:

Thomas

PS! What happens if I apply that idea recursively? :slight_smile:

···

On Mon, 2002-06-17 at 21:11, Chris Gehlker wrote:

On 6/17/02 11:36 AM, “Christopher Browne” cbbrowne@acm.org wrote:

If an SQL database is being used, then perhaps the filesystem
doesn’t have to get traversed, but that certainly doesn’t eliminate
the need to traverse the database.

But the difference is the difference between accessing one file and
accessing every file. That’s tremendous.

In an attempt to throw the authorities off his trail, Chris Gehlker gehlker@fastq.com transmitted:

If an SQL database is being used, then perhaps the filesystem
doesn’t have to get traversed, but that certainly doesn’t eliminate
the need to traverse the database.

But the difference is the difference between accessing one file and
accessing every file. That’s tremendous.

But that’s not the difference.

A “find” command does not read every file. It reads a database
containing metadata about the files. It does not read the contents of
those files.

In effect, “find” is doing exactly the same thing.

It does not read every file.

Let me say that several more times, because that fact seems not to be
sinking in successfully.

It (“file”) does not read every file. It does not read every
file
. IT DOES NOT READ EVERY FILE.

There is no “tremendous difference.” If all “find” is being used for
is to get names of files (and perhaps attributes), then it is not
reading the files
. It is reading a database of metadata.

If you’re walking through a filesystem that has 17,000 files, then a
run of “find” will have to walk through the set of filesystem blocks
that contain 17,000 directory entries containing the metadata for
those 17,000 files.

Change that to a SQL query, and it changes insubstantially to
walking through the set of database blocks that contain 17,000
directory entries containing the metadata for those 17,000 files.

The only crucial difference between those approaches is that the data
may be somewhat more compact in an SQL database. Otherwise, there is
no reason to expect any difference in overall behaviour. RDBMSes
are commonly implemented as B-Trees. Filesystem directory structures
are also commonly implemented as B-Trees. Not a difference.

···

On 6/17/02 11:36 AM, “Christopher Browne” cbbrowne@acm.org wrote:

(concatenate 'string “cbbrowne” “@cbbrowne.com”)
http://www.ntlug.org/~cbbrowne/fs.html
Ever heard of .cshrc?
That’s a city in Bosnia. Right?
(Discussion in comp.os.linux.misc on the intuitiveness of commands.)

[snipped]

We seem to have come full circle. I started these threads by asking whether
find and similar tools like stat sacrificed speed for portability across
file systems or whether they were sometimes optimized for particular file
systems. It seems that there my be optimized tools but they aren’t called
‘find’, ‘stat’ or what have you.

So the question for Ruby is whether to live with what we have, add methods
to use the faster tools when they are available, or develop something fast
and portable using a database and FAM.

FAM uses polling on systems without kernel (eg Linux sans the imon
patch) or dnotify support, and therefore is subject to the same speed
considerations as find, stat, etc.

I’m flattered that my FAM bindings were mentioned, though. :wink:

···


Laws are the spider’s webs which, if anything small falls into them they
ensnare it, but large things break through and escape. -Solon, statesman
(c. 638-c558 BCE)


Paul Duncan pabs@pablotron.org pabs in #gah (OPN IRC)
http://www.pablotron.org/ OpenPGP Key ID: 0x82C29562

Hi,

i have installed it.
it may not be called gcc though?

What OS are you on? If you are on a Linux box, it will be called gcc
for sure.

Seems MacOS X.

gcc -fno-common -no-cpp-precomp -flat_namespace -pipe -no-precomp
-I. -I. -I/usr/local/lib/ruby/1.6/powerpc-darwin5.3
-I. -I/usr/local/include -I/usr/X11R6/include -c -o glut.o glut.c

At first, can you run gcc from the shell? > ccos

···

At Sat, 15 Jun 2002 13:41:37 +0900, Sean Middleditch wrote:

On Sat, 2002-06-15 at 00:34, ccos wrote:


Nobu Nakada

You don’t have the glut include files installed or on the proper
include path.

Have you installed the glut development package?

···

On Saturday 15 June 2002 12:18 am, ccos wrote:

glut.c:8: GL/glut.h: No such file or directory


Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE

Login @
http://museum.sysun.com/museum/u7conn.html
or check
http://cm.bell-labs.com/7thEdMan/

SWEET.

Rick

···


http://www.rickbradley.com MUPRN: 152 (92F)
> logs of beginning
random email haiku | and end of web hits) Hmm, that
> could be interesting.

I don’t understand your ‘in (another) filesystem’ qualifier but yes,
database filesystems, of which BeFS is probably the most famous, do just
that and they are notoriously fast.

···

On 6/17/02 12:43 PM, “Thomas Sondergaard” tsondergaard@speakanet.com wrote:

On Mon, 2002-06-17 at 21:11, Chris Gehlker wrote:

On 6/17/02 11:36 AM, “Christopher Browne” cbbrowne@acm.org wrote:

If an SQL database is being used, then perhaps the filesystem
doesn’t have to get traversed, but that certainly doesn’t eliminate
the need to traverse the database.

But the difference is the difference between accessing one file and
accessing every file. That’s tremendous.

According to that theory I should be able to improve my file system
performance by using a filesystem that uses a single (big) file in
(another) filesystem.

Those who write clearly have readers, those who write obscurely have
commentators. -Albert Camus, writer and philosopher (1913-1960)

Right!

Which is quite incorrect.

The modern thing is for filesystems to use much the same sorts of data
structures and algorithms as are used in relational databases.
Storing data in B-trees, with interesting paging systems.

As a result, filesystems and database systems are getting to behave
increasingly similarly.

···

The world rejoiced as Thomas Sondergaard tsondergaard@speakanet.com wrote:

On Mon, 2002-06-17 at 21:11, Chris Gehlker wrote:

On 6/17/02 11:36 AM, “Christopher Browne” cbbrowne@acm.org wrote:

If an SQL database is being used, then perhaps the filesystem
doesn’t have to get traversed, but that certainly doesn’t eliminate
the need to traverse the database.

But the difference is the difference between accessing one file and
accessing every file. That’s tremendous.

According to that theory I should be able to improve my file system
performance by using a filesystem that uses a single (big) file in
(another) filesystem.


(reverse (concatenate 'string “gro.gultn@” “enworbbc”))
http://www.ntlug.org/~cbbrowne/emacs.html
Who needs fault-tolerant computers when there’s obviously an ample
market of fault-tolerant users?

In an attempt to throw the authorities off his trail, Chris Gehlker
gehlker@fastq.com transmitted:

If an SQL database is being used, then perhaps the filesystem
doesn’t have to get traversed, but that certainly doesn’t eliminate
the need to traverse the database.

But the difference is the difference between accessing one file and
accessing every file. That’s tremendous.

But that’s not the difference.

A “find” command does not read every file. It reads a database
containing metadata about the files. It does not read the contents of
those files.

This may be true for your system. That was the original question and it
still remains unanswered for whatever system you are using. It is not true
for NetBSD, and MacOS X. If you doubt this assertion, check the source. Find
is literally reading directories. On both these systems, the disk will be
continually accessed the first time find executes. Find also executes, the
first time, slowly, on the order of a minute. The find function in Windows
seems to operate the same way in terms of being slow and continually
accessing the disk.

Change that to a SQL query, and it changes insubstantially to
walking through the set of database blocks that contain 17,000
directory entries containing the metadata for those 17,000 files.

The only crucial difference between those approaches is that the data
may be somewhat more compact in an SQL database. Otherwise, there is
no reason to expect any difference in overall behaviour. RDBMSes
are commonly implemented as B-Trees. Filesystem directory structures
are also commonly implemented as B-Trees. Not a difference.

This depends entirely on the file system. There are systems where a
directory is just a node in a tree. There are other systems in which the
directories are just special files that are actually stored in disk sectors
like any other file. In these latter systems, walking the file system will
involve opening, reading and closing each directory which in turn involves
moving heads and waiting for the disk to revolve.

···

On 6/19/02 1:26 PM, “Christopher Browne” cbbrowne@acm.org wrote:

On 6/17/02 11:36 AM, “Christopher Browne” cbbrowne@acm.org wrote:


Tact is the ability to describe others as they see themselves. -Abraham
Lincoln, 16th president of the U.S (1809-1865)

Darn! It was a good idea though. Searching for files that match a given
criterion is something that comes up a lot, for me anyway. A fast, portable,
Ruby way to do this would be great.

Someone else suggested just using find once and redirecting the output to a
table. Then Ruby could be used to search the table. Well, IIRC, they
suggested grep but Ruby would do as well.

This method has some merit, but you have to have a pretty good idea of your
search criteria in advance to make the table. The bigger problem, though, is
knowing when the table is out of date. Can FAM help with that?

···

On 6/21/02 1:27 PM, “Paul Duncan” pabs@pablotron.org wrote:

FAM uses polling on systems without kernel (eg Linux sans the imon
patch) or dnotify support, and therefore is subject to the same speed
considerations as find, stat, etc.

I’m flattered that my FAM bindings were mentioned, though. :wink:


Many individuals have, like uncut diamonds, shining qualities beneath a
rough exterior. - Juvenal, poet (c. 60-140)

[snipped]

We seem to have come full circle. I started these threads by asking
whether find and similar tools like stat sacrificed speed for
portability across file systems or whether they were sometimes
optimized for particular file systems. It seems that there my be
optimized tools but they aren’t called’find’, ‘stat’ or what have you.

So the question for Ruby is whether to live with what we have, add
methods to use the faster tools when they are available, or develop
something fast and portable using a database and FAM.

FAM uses polling on systems without kernel (eg Linux sans the imon
patch) or dnotify support, and therefore is subject to the same speed
considerations as find, stat, etc.

I realize that without the advantages of the imon patch to the kernel, the
idea is not practical, might as well use slocate. However FAM is
installed and running on the RedHat 7.2 machines that I’ve installed
recently.

This email (note the date)
http://lists.ximian.com/archives/public/gnome-vfs/2001-December/000934.html

says explicitly that imon is in the RH7.2 kernel.

The point here is that one of the most popular distrbutions has a fully
functional FAM setup. So, rather than argue on this list, I’m writing a
prototype in ruby to see if I’m right. If it works out Ok, maybe re-write
it in C++, if not, it will be a cool learning experience.

···

On Sat, 22 Jun 2002 05:27:50 +0900 Paul Duncan pabs@pablotron.org wrote:

I’m flattered that my FAM bindings were mentioned, though. :wink:


Laws are the spider’s webs which, if anything small falls into them
they ensnare it, but large things break through and escape. -Solon,
statesman(c. 638-c558 BCE)


Paul Duncan pabs@pablotron.org pabs in #gah (OPN IRC)
http://www.pablotron.org/ OpenPGP Key ID: 0x82C29562


“Daniel P. Zepeda” <daniel@z,e,p,e,d,a,-,z,o,n,e.net>
(Remove commas for address)

Hello, Paul. I had ignored this thread until I saw something that piqued my
interest regarding FAM. I have been working a package management technique
that needs to know some of the things that apparently FAM can find out. What
version of the kernel and what options are required to avoid polling?

Thans to Paul Duncan for the FAM bindings. I finally, just now, got FAM and
FAM/Ruby installed and working(?). I am on Linux-2.4.18 and installed with
the dnotify patch to FAM, so I should get real time events rather than
polling. I am hopeful that this will prove useful in my homegrown package
manager.

BTW, I love this sig…

···


Laws are the spider’s webs which, if anything small falls into them they
ensnare it, but large things break through and escape. -Solon, statesman
(c. 638-c558 BCE)

hey there,
thanks for the reply.
i’m a newbie and the opengl doco’s in japanese
so i’m a bit at a loss. i am hitting the unix and c books
pretty hard now that i have a bit of free time, but it’ll
probably be a little while before i get the hang of what is going on
behind the scenes, so the help is very
much appreciated. but, to answer your question:

no i haven’t installed the glut package.
wouldn’t the fact that there is no leading
slash in front of GL (

glut.c:8: GL/glut.h: No such file or directory
) indicate that
it is looking for it in the same directory as
the opengl stuff?
i also assumed probably incorrectly that
because it was saying ‘yes’ alot…

checking for () in -lGL… yes
checking for () in -lGLU… yes
creating Makefile
checking for XAllowDeviceEvents() in -lXi… yes
checking for XMITMiscGetBugMode() in -lXext… yes
checking for XmuAddCloseDisplayHook() in -lXmu… yes
checking for () in -lglut… yes

…i had the glut stuff installed?
how/where do i change the include path?
is this a ruby glut library?

thanks again,
c

···

On Sunday, June 16, 2002, at 01:37 AM, Ned Konz wrote:

On Saturday 15 June 2002 12:18 am, ccos wrote:

glut.c:8: GL/glut.h: No such file or directory

You don’t have the glut include files installed or on the proper
include path.

Have you installed the glut development package?

Ned Konz
http://bike-nomad.com
GPG key ID: BEEA7EFE

Rick Bradley wrote:

Login @
http://museum.sysun.com/museum/u7conn.html
or check
http://cm.bell-labs.com/7thEdMan/

SWEET.

:slight_smile:

If anyone knows or comes across other original manuals, (+/-public)
historic remote logins, or other nx resources, please drop me a line,
perhaps I can add em to
http://www.pinkjuice.com/nx/

TIA,
Tobi

···


http://www.pinkjuice.com/