2008-09-17 28 views
6

Tôi đang tìm kiếm những cách rẻ tiền để giảm thời gian xây dựng trên máy tính tại nhà của mình. Tôi chỉ đọc article about disabling the Last Access Time attribute của một tệp trên Windows XP, do đó những lần đọc đơn giản không ghi lại bất kỳ thứ gì vào đĩa.Tệp trên XP: Tắt "thời gian truy cập lần cuối" an toàn chưa?

Nó cũng rất đơn giản. Tại một ghi DOS prompt:

fsutil behavior set disablelastaccess 1

Có ai đã từng thử nó trong bối cảnh tòa nhà C++ dự án? Có bất kỳ hạn chế nào không?

[Chỉnh sửa] Thêm về chủ đề here.

Trả lời

4

Tôi chưa thử trên hộp Windows (tôi sẽ là tối nay, cảm ơn) nhưng điều tương tự trên Linux (tùy chọn noatime khi gắn ổ đĩa) tăng tốc mọi thứ lên đáng kể.

Tôi không thể nghĩ ra bất kỳ lần sử dụng nào mà thời gian truy cập cuối cùng sẽ hữu ích khác với mục đích kiểm tra và, thậm chí sau đó, Windows có lưu trữ người dùng đã truy cập vào nó không? Tôi biết Linux không.

4

Tôi khuyên bạn nên dùng thử và xem nó có tạo sự khác biệt hay không. Tuy nhiên, tôi bi quan về điều này thực sự tạo ra bất kỳ sự khác biệt nào, vì trong các bản dựng lớn hơn/sạch sẽ bạn sẽ ghi một lượng lớn dữ liệu, do đó việc điều chỉnh thời gian truy cập tệp sẽ không mất nhiều thời gian (cộng với nó có lẽ sẽ được lưu trữ trong bộ nhớ cache anyway).

Tôi rất muốn được chứng minh là sai.


Kết quả:

Ran một vài xây dựng trên cơ sở mã tại nơi làm việc trong cả hai gỡ lỗi và phát hành cấu hình với thời gian truy cập cuối cùng kích hoạt và người tàn tật.

Mã nguồn của chúng tôi là khoảng 39 MB (kích thước 48 MB trên đĩa) và chúng tôi xây dựng khoảng một nửa cho cấu hình mà tôi đã tạo cho các thử nghiệm này. Trình gỡ lỗi tạo ra 1,76 GB các tệp tạm thời và đầu ra, trong khi bản phát hành tạo ra khoảng 600 MB dữ liệu đó. Chúng tôi xây dựng trên dòng lệnh bằng cách sử dụng một sự kết hợp của Ant và Visual Studio dòng lệnh xây dựng các công cụ.

Máy của tôi là Core 2 Duo 3GHz, với 4GB ram, tốc độ 7200 vòng/phút, chạy Windows XP 32 bit.

xây dựng với thời gian truy cập cuối cùng bị vô hiệu hóa:

gỡ lỗi lần = 6:17, lần 5:41

phát hành = 6:07, 6:06

Tòa nhà có người cuối cùng thời gian truy cập được kích hoạt:

gỡ lỗi lần = 6:00, lần 5:47

phát hành = 6:19, 5:48

Nhìn chung, tôi không nhận thấy bất kỳ sự khác biệt nào giữa hai chế độ, vì trong cả hai trường hợp, các tệp có nhiều khả năng nhất trong bộ nhớ cache của hệ thống nên chỉ đọc từ bộ nhớ.

Tôi tin rằng bạn sẽ nhận được số tiền lớn nhất cho buck của bạn bằng cách chỉ triển khai các tiêu đề được biên dịch sẵn đúng (không phải các tiêu đề được tạo tự động mà Visual Studio tạo trong dự án). Chúng tôi đã thực hiện điều này một vài năm trước tại nơi làm việc (khi cơ sở mã nhỏ hơn rất nhiều) và nó đã giảm bớt thời gian xây dựng của chúng tôi xuống còn một phần ba thời gian.

+0

Thú vị! Tuy nhiên, tôi hy vọng rằng lợi ích thực sự là khi chạm vào một tệp duy nhất có nhiều bao gồm và sau đó xây dựng lại: kiểm tra phụ thuộc sẽ bắt đầu tìm kiếm toàn bộ tệp, điều này có thể kích hoạt ghi thời gian truy cập cuối cùng. Có thể ... –

0

nó sẽ cải thiện hiệu suất một chút. Khác hơn là nó sẽ không làm nhiều hơn nữa (bạn sẽ không thể nhìn thấy khi tập tin được truy cập cuối cùng của khóa học). Tôi có nó bật theo mặc định khi tôi cài đặt Windows XP sử dụng nLite để cắt của sưng lên tôi không cần.

1

Đó là một lựa chọn tốt, nhưng nó sẽ ảnh hưởng đến một số công cụ. Cũng giống như các dịch vụ lưu trữ từ xa, và utilies khác mà phụ thuộc vào thống kê truy cập tập tin để tối ưu hóa hệ thống tập tin của bạn (ví dụ: Norton Defrag)

7

Từ SetFileTime's documentation:

"NTFS trì hoãn cập nhật đến thời điểm truy cập cuối cùng cho một tập tin lên đến một giờ sau lần truy cập cuối cùng. "

Không có điểm thực nào để tắt chức năng này - bài viết gốc sai, dữ liệu không được ghi trên mọi truy cập.

EDIT:

Là tại sao tác giả của bài viết mà tuyên bố một 10x tốc độ lên, tôi nghĩ anh ấy là do mình tốc độ lên đến điều sai trái: ông cũng tàn tật thế hệ 8.3 filename. Để tạo ra một tên tập tin 8,3 cho một tập tin, NTFS phải cơ bản tạo ra mỗi khả năng lần lượt sau đó xem nếu nó đã được sử dụng (không có tham chiếu; Tôi chắc chắn Raymond đã nói về nó nhưng không thể tìm thấy một liên kết). Nếu tất cả các tệp của bạn đều chia sẻ sáu ký tự đầu tiên, bạn sẽ bị vấn đề này cắn và hành lang là bạn nên đặt các ký tự phân biệt các tệp trong sáu ký tự đầu tiên để chúng không xung đột. Tắt tạo tên ngắn sẽ ngăn chặn điều này.

+0

Thông tin tốt. Tuy nhiên, tác giả của bài viết gốc đề cập đến tốc độ gấp 10 lần - có một thứ gì đó chậm với cơ chế thời gian truy cập lần cuối. –

0

Tôi không muốn thu hút sự chú ý từ câu hỏi "thời gian truy cập cuối cùng", nhưng có thể có các cách khác để tăng tốc các bản dựng của bạn. Không biết bối cảnh và thiết lập dự án của bạn, thật khó để nói điều gì có thể chậm, nhưng có thể có một số điều có thể hữu ích:

Tạo bản dựng "uber". Tức là, tạo một tệp uber.cpp biên dịch đơn có chứa một loạt các dòng như

#include "file1.cpp" 
#include "file2.cpp" 

Bạn có thể gặp rắc rối với xung đột tên biến tĩnh, nhưng thường có thể dễ dàng phân loại.Thiết lập ban đầu là loại đau, nhưng thời gian xây dựng có thể tăng đáng kể. Đối với chúng tôi, nhược điểm lớn nhất là trong studio dành cho nhà phát triển, bạn không thể nhấp chuột phải vào tệp và nói 'biên dịch' nếu tệp đó là một phần của bản dựng uber. Nó không phải là một vấn đề lớn mặc dù. Chúng tôi có các cấu hình xây dựng riêng biệt cho các bản dựng 'uber' để biên dịch các tệp uber nhưng loại trừ các tệp cpp riêng lẻ khỏi quá trình xây dựng. Nếu bạn cần thêm thông tin, hãy để lại nhận xét và tôi có thể giúp bạn. Ngoài ra, trình tối ưu hóa có xu hướng làm một công việc tốt hơn một chút với các bản dựng uber.

Ngoài ra, bạn có một số lượng lớn tệp bao gồm hay nhiều depencendies giữa các tệp bao gồm không? Nếu vậy, điều đó sẽ làm chậm đáng kể thời gian xây dựng.

Bạn có đang sử dụng các tiêu đề được biên dịch trước không? Nếu không, bạn có thể nhìn vào đó như một giải pháp vì điều đó cũng sẽ giúp ích cho bạn.

Thời gian tạo chậm là thường là được theo dõi thành nhiều tệp I/O. Đó là thời gian lớn nhất chìm trong xây dựng - chỉ cần mở, đọc và phân tích tất cả các tệp. Nếu bạn cắt giảm tập tin I/O, bạn sẽ cải thiện thời gian xây dựng.

Dù sao, xin lỗi hơi quấy rầy chủ đề một chút, nhưng đề xuất sẵn có để thay đổi cách thời gian truy cập cuối cùng của tệp được đặt dường như là một giải pháp 'sledgehammer'.

+0

Xin chào Mark, cảm ơn những lời đề nghị. Tôi biết về thủ thuật Überbuild, mà không bỏ nó trong trường hợp của tôi. Trên thực tế, có rất nhiều thứ tôi có thể làm để tăng tốc mọi thứ, nhưng tôi muốn bắt đầu với những thứ sẽ giúp tôi đạt được nhiều thành công nhất. –

0

Đối với máy chủ bận, việc tắt thời gian truy cập lần cuối thường là một ý tưởng hay. Nhược điểm tiềm năng duy nhất là nếu có kịch bản sử dụng thời gian truy cập cuối cùng, ví dụ, nói rằng một tập tin không còn được viết nữa.

Điều đó nói rằng, nếu bạn đang tìm cách cải thiện thời gian xây dựng trên dự án C++, tôi khuyên bạn nên đọc Recursive Make Considered Harmful. Bài viết này khoảng một thập kỷ cũ, nhưng những điểm mà nó tạo ra về cách các định nghĩa đệ quy trong các kịch bản xây dựng của chúng ta gây ra thời gian xây dựng lâu dài vẫn còn rất đáng hiểu.

0

Vô hiệu hóa thời gian truy cập là hữu ích khi sử dụng ssd (ổ đĩa trạng thái rắn - thẻ, ổ đĩa USB, vv) vì nó làm giảm số lượng ghi vào ổ đĩa. Tất cả các thiết bị lưu trữ trạng thái rắn đều có tuổi thọ được đo bằng số lượng ghi có thể được thực hiện cho từng địa chỉ riêng lẻ. Một số phương tiện truyền thông chỉ định tối thiểu 100 của hàng nghìn và một số thậm chí là 1 triệu. Các hệ điều hành và các tệp thực thi khác có thể truy cập nhiều tệp trong một thao tác cũng như truy cập tài liệu người dùng. Điều này sẽ áp dụng cho các hệ thống nhúng của eee, và các hệ thống khác.

-1

Để Mike Dimmick:

Hãy thử kết nối ổ USB với nhiều tệp và sao chép chúng vào ổ đĩa trong của bạn. Đó cũng là trường hợp ngoài việc biên dịch chương trình (được mô tả trong bài gốc).

Các vấn đề liên quan