| SCONS-TIME(1) | SCons 4.11.1 | SCONS-TIME(1) |
نام (NAME)
scons-time - تولید و نمایش اطلاعات زمانبندی SCons
خلاصه دستور (SYNOPSIS)
scons-time subcommand [options...] [arguments...]
تولید اطلاعات زمانبندی (GENERATING TIMING INFORMATION)
scons-time run [-hnqv] [-f FILE] [--number=NUMBER] [--outdir=OUTDIR] [-p STRING] [--python=PYTHON] [-s DIR] [--scons=SCONS] [--svn=URL] [ARGUMENTS]
استخراج زمانبندی توابع (Extracting Function Timings)
scons-time func [-h] [--chdir=DIR] [-f FILE] [--fmt=FORMAT] [--func=NAME] [-p STRING] [-t NUMBER] [--title= TITLE] [ARGUMENTS]
استخراج آمار حافظه (Extracting Memory Statistics)
scons-time mem [-h] [--chdir=DIR] [-f FILE] [--fmt=FORMAT] [-p STRING] [--stage=STAGE] [-t NUMBER] [--title=TITLE] [ARGUMENTS]
استخراج شمارش اشیاء (Extracting Object Counts)
scons-time obj [-h] [--chdir=DIR] [-f FILE] [--fmt=FORMAT] [-p STRING] [--stage=STAGE] [-t NUMBER] [--title=TITLE] [ARGUMENTS]
استخراج زمانهای اجرا (Extracting Execution Times)
scons-time time [-h] [--chdir=DIR] [-f FILE] [--fmt=FORMAT] [-p STRING] [-t NUMBER] [--title=TITLE] [--which=WHICH] [ARGUMENTS]
متن راهنما (Help Text)
scons-time help SUBCOMMAND [...]
توضیحات (DESCRIPTION)
دستور scons-time یک پیکربندی SCons را در مجموعهای استاندارد از زمانبندیهای پروفایلشده اجرا میکند و میتواند اطلاعات حاصل از پروفایلها و فایلهای لاگ این زمانبندیها را استخراج کرده و به صورت نمودار نمایش دهد. عملیاتی که باید توسط اسکریپت scons-time انجام شود، با یک زیردستور مشخص میشود که نخستین آرگومان در خط فرمان است. برای اطلاعات بیشتر درباره نحوه عملکرد هر زیردستور، بخش SUBCOMMANDS در ادامه را ببینید.
روش پایه برای استفاده از scons-time این است که زیردستور scons-time run (احتمالاً چندین بار) برای تولید خروجی پروفایل و فایل لاگ اجرا شود، و سپس از یکی دیگر از زیردستورها برای نمایش نتایج ثبتشده در پروفایلها و فایلهای لاگ برای نوع خاصی از اطلاعات استفاده گردد: زمانبندی توابع (زیردستور scons-time func)، کل حافظه مصرفی (زیردستور scons-time mem)، تعداد اشیاء (زیردستور scons-time obj) و زمان کل اجرا (زیردستور scons-time time). گزینههایی برای قرار دادن و یافتن پروفایلها و فایلهای لاگ در دایرکتوریهای جداگانه، تولید خروجی در قالبی مناسب جهت رسم نمودار با برنامه gnuplot(1) و مواردی از این دست وجود دارند.
دو روش اساسی برای استفاده از زیردستور scons-time run جهت جمعآوری آمار زمانبندی برای یک پیکربندی در نظر گرفته شده است. یکی استفاده از گزینه --svn= برای سنجش یک پیکربندی در برابر فهرستی از بازبینیها (revisions) از مخزن Subversion مربوط به SCons است. این کار یک پروفایل و فایل لاگ زمانبندی برای هر بازبینی فهرستشده با گزینه --number= تولید میکند، و میتواند برای مشاهده تأثیر تغییرات ثبتشده در پایهکد SCons بر روی یک پیکربندی خاص در طول زمان مورد استفاده قرار گیرد.
روش دیگر، پروفایل کردن تغییرات تدریجی روی یک پایهکد محلی SCons در طول چرخه توسعه است؛ یعنی بررسی تأثیر عملکردی تغییراتی که در درخت محلی ایجاد میکنید. در این حالت، شما زیردستور scons-time run را بدون گزینه --svn= اجرا میکنید؛ در این صورت، این دستور صرفاً دایرکتوری خروجی فایلهای پروفایل/لاگ (بهطور پیشفرض دایرکتوری جاری) را بررسی کرده و بهطور خودکار شماره اجرای بعدی را برای پروفایل و فایل لاگ خروجی تعیین میکند. با استفاده از این روش، چرخه توسعه چیزی شبیه به این خواهد بود: اعمال تغییر در SCons؛ اجرای scons-time run برای پروفایل کردن آن در برابر یک پیکربندی خاص؛ اعمال تغییری دیگر در SCons؛ اجرای دوباره scons-time run برای پروفایل کردن آن؛ و غیره..SH "گزینهها (OPTIONS)"
دستور scons-time تنها از چند گزینهٔ سراسری پشتیبانی میکند:
-h, --help
-V, --version
بخش عمدهٔ قابلیتها توسط گزینههای زیرفرمانهای مجزا کنترل میشوند. برای اطلاعات بیشتر دربارهٔ گزینههای هر زیرفرمان، بخش بعدی را ببینید.
زیرفرمانها (SUBCOMMANDS)
دستور scons-time از زیرفرمانهای مجزای زیر پشتیبانی میکند.
زیرفرمان func
scons-time func [-h] [--chdir=DIR] [-f FILE] [--fmt=FORMAT] [--func=NAME] [-p STRING] [-t NUMBER] [--title= TITLE] [ARGUMENTS]
زیرفرمان scons-time func اطلاعات زمانبندی را برای یک تابع خاص پایتون در SCons نمایش میدهد. بهطور پیشفرض، اطلاعات تابع _main() را استخراج میکند که شامل زمانبندی پروفایلر پایتون برای کل SCons است.
زیرفرمان scons-time func اطلاعات زمانبندی تابع را از تمام آرگومانهای فایل مشخصشده، که باید فایلهای خروجی پروفایلر پایتون باشند، استخراج میکند. (بهطور معمول، اینها فایلهای *.prof هستند که توسط زیرفرمان scons-time run تولید شدهاند، اما در واقع میتوانند با هر بار اجرای پروفایلر پایتون نیز تولید شوند.) تمام آرگومانهای نام فایل برای یافتن فایلهای روی دیسک، الگوگشایی (glob) میشوند.
اگر هیچ آرگومانی مشخص نشود، اطلاعات زمانبندی تابع از تمامی فایلهای *.prof یا زیرمجموعهای از آنها با پیشوند مشخصشده توسط گزینهٔ -p استخراج خواهد شد.
گزینهها عبارتاند از:
-C DIRECTORY, --chdir=DIRECTORY
-f FILE, --file=FILE
-fmt=FORMAT, --format=FORMAT
--func=NAME
-h, --help
-p STRING, --prefix=STRING
-t NUMBER, --tail=NUMBER
scons-time help SUBCOMMAND [...] زیرفرمان help متن راهنما را برای هر زیرفرمان دیگری که به عنوان آرگومانهای بعدی در خط فرمان فهرست شده باشد، چاپ میکند.
زیرفرمان mem
scons-time mem [-h] [--chdir=DIR] [-f FILE] [--fmt=FORMAT] [-p STRING] [--stage=STAGE] [-t NUMBER] [--title=TITLE] [ARGUMENTS]
زیرفرمان scons-time mem میزان حافظهٔ مصرفی توسط SCons را نمایش میدهد.
زیرفرمان scons-time mem اطلاعات مصرف حافظه را از تمامی آرگومانهای فایل مشخصشده استخراج میکند؛ این فایلها باید فایلهایی حاوی خروجی حاصل از اجرای SCons با گزینهٔ --debug=memory باشند. (به طور معمول، اینها همان فایلهای *.log تولیدشده توسط زیرفرمان scons-time run هستند.) تمامی آرگومانهای نام فایل به منظور تطبیق با فایلهای روی دیسک گسترش (glob) داده میشوند.
اگر هیچ آرگومانی مشخص نشود، اطلاعات حافظه از تمام فایلهای *.log یا زیرمجموعهای از آنها با یک پیشوند مشخصشده توسط گزینهٔ -p استخراج خواهد شد.
-C DIR, --chdir=DIR
-f FILE, --file=FILE
-fmt=FORMAT, --format=FORMAT
-h, --help
-p STRING, --prefix=STRING
--stage=STAGE
-t NUMBER, --tail=NUMBER
scons-time obj [-h] [--chdir=DIR] [-f FILE] [--fmt=FORMAT] [-p STRING] [--stage=STAGE] [-t NUMBER] [--title=TITLE] [ARGUMENTS]
زیرفرمان scons-time obj تعداد اشیای ایجادشده از یک نوع مشخص توسط SCons را نمایش میدهد.
زیرفرمان scons-time obj شمارش اشیاء را از تمام فایلهای مشخصشده در آرگومانها استخراج میکند؛ این فایلها باید حاوی خروجی حاصل از اجرای SCons با گزینهٔ --debug=count باشند. (بهطور معمول، اینها فایلهای *.log تولیدشده توسط زیرفرمان scons-time run هستند.) تمام آرگومانهای نام فایل با فایلهای موجود روی دیسک تطبیق داده میشوند (globbed).
اگر هیچ آرگومانی مشخص نشود، شمارش اشیاء از تمام فایلهای *.log یا زیرمجموعهای از آنها با پیشوند مشخصشده توسط گزینهٔ -p استخراج خواهد شد.
-C DIR, --chdir=DIR
-f FILE, --file=FILE
-fmt=FORMAT, --format=FORMAT
-h, --help
-p STRING, --prefix=STRING
--stage=STAGE
-t NUMBER, --tail=NUMBER
scons-time run [-hnqv] [-f FILE] [--number=NUMBER] [--outdir=OUTDIR] [-p STRING] [--python=PYTHON] [-s DIR] [--scons=SCONS] [--svn=URL] [ARGUMENTS] زیرفرمان scons-time run زیرفرمان پایهای برای ارزیابی کارایی (profiling) یک پیکربندی خاص در برابر نسخهای از SCons است.
پیکربندی مورد آزمایش بهصورت فهرستی از فایلها یا دایرکتوریهایی مشخص میشود که در یک دایرکتوری موقت که SCons در آن فراخوانی خواهد شد، باز یا کپی میشوند. زیرفرمان scons-time run پسوندهای فایلی مانند .tar، .tar.gz، .tgz و .zip را درک کرده و محتویات آنها را در یک دایرکتوری موقت باز میکند. اگر بیش از یک آرگومان مشخص شده باشد، هر کدام «روی» بایگانیها یا دایرکتوریهای قبلی در دایرکتوری موقت باز یا کپی میشوند، بنابراین انتظار میرود که چندین بایگانی مشخصشده، ساختار دایرکتوری یکسانی داشته باشند.
بهمحض اینکه آرگومانهای فایل یا دایرکتوری در دایرکتوری موقت باز یا کپی شدند، زیرفرمان scons-time run نسخهٔ درخواستی SCons را سه بار روی این پیکربندی اجرا میکند:
راهاندازی (Startup)
ساخت کامل (Full build)
ساخت مجدد (Rebuild)
هر فراخوانی، فایل گزارش خروجی و یک پروفایل را ثبت میکند.
زیرفرمان scons-time run از گزینههای زیر پشتیبانی میکند:
-f FILE, --file=FILE
-h, --help
-n, --no-exec
--number=NUMBER
هنگامی که همراه با گزینهٔ --svn=URL استفاده شود، NUMBER یک یا چند شمارهٔ بازنگری (revision) در Subversion را که با کاما از هم جدا شدهاند مشخص میکند که بهطور خودکار از مخزن Subversion در URL مشخصشده دریافت خواهند شد. بازهای از شمارههای بازنگری یا دلتا را میتوان با جدا کردن دو عدد با خط تیره (-) مشخص کرد.
مثال:
% scons-time run --svn=http://scons.tigris.org/svn/trunk --num=1247,1249-1252 .
-p STRING, --prefix=STRING
--python=PYTHON
-q, --quiet
-s DIR, --subdir=DIR
--scons=SCONS
--svn=URL, --subversion=URL
-v, --verbose
scons-time time [-h] [--chdir=DIR] [-f FILE] [--fmt=FORMAT] [-p STRING] [-t NUMBER] [--title=TITLE] [--which=WHICH] [ARGUMENTS]
زیرفرمان scons-time time زمانهای اجرای SCons را همانگونه که توسط گزینهٔ scons --debug=time گزارش شدهاند، نمایش میدهد.
زیرفرمان scons-time time زمانبندیهای SCons را از تمام آرگومانهای فایل مشخصشده استخراج میکند؛ این فایلها باید فایلهایی حاوی خروجی حاصل از اجرای SCons همراه با گزینهٔ --debug=time باشند. (به طور معمول، اینها فایلهای *.log تولید شده توسط زیرفرمان scons-time run هستند.) تمام آرگومانهای نام فایل برای تطبیق با فایلهای روی دیسک بسط (glob) داده میشوند.
اگر هیچ آرگومانی مشخص نشود، زمانبندیهای اجرا از تمام فایلهای *.log یا زیرمجموعهای از آنها با پیشوند مشخصشده توسط گزینهٔ -p استخراج خواهد شد.
-C DIR, --chdir=DIR
-f FILE, --file=FILE
-fmt=FORMAT, --format=FORMAT
-h, --help
-p STRING, --prefix=STRING
-t NUMBER, --tail=NUMBER
--which=WHICH
زیردستورهای مختلف scons-time میتوانند در صورت دریافت گزینههای -f یا --file، اطلاعات را از یک فایل پیکربندی مشخص بخوانند. فایل پیکربندی در واقع بهصورت یک اسکریپت Python اجرا میشود. مقداردهی متغیرهای Python در فایل پیکربندی، رفتار اسکریپت scons-time را بسیار راحتتر از تعیین گزینهها یا آرگومانهای خط فرمان برای هر اجرا کنترل میکند، و روشی سودمند برای یکپارچهسازی و ذخیره اطلاعات لازم جهت تولید (و گزارش) اجراهای زمانسنجی پایدار برای یک پیکربندی مشخص فراهم میآورد.
archive_list
initial_commands
key_location
prefix
python
scons
scons_flags
scons_lib_dir, scons_wrapper, startup_targets, subdir
subversion_url
svn
svn_co_flag, tar, targets
targets0, targets1, targets2, title, unzip, verbose, vertical_bars
در اینجا نمونهای از فایل پیکربندی scons-time برای یک پروژه فرضی آورده شده است:
# The project doesn't use SCons natively (yet), so we're
# timing a separate set of SConscript files that we lay
# on top of the vanilla unpacked project tarball.
arguments = ['project-1.2.tgz', 'project-SConscripts.tar']
# The subdirectory name contains the project version number,
# so tell scons-time to chdir there before building.
subdir = 'project-1.2'
# Set the prefix, so output log files and profiles are named:
# project-000-[012].{log,prof}
# project-001-[012].{log,prof}
# etc.
prefix = 'project'
# The SConscript files being tested don't do any SConf
# configuration, so run their normal ./configure script
# before we invoke SCons.
initial_commands = [
'./configure',
]
# Only time building the bin/project executable.
targets = 'bin/project'
# Time against SCons revisions of the branches/core branch
subversion_url = 'http://scons.tigris.org/svn/scons/branches/core'
محیط (ENVIRONMENT)
اسکریپت scons-time از متغیرهای محیطی زیر استفاده میکند:
PRESERVE
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
Steven Knight <knight at baldmt dot com>
| 08/26/2026 | SCons 4.11.1 |