Chroium 源码目录结构分析(1):源码目录体积一栏

news2024/11/14 14:20:16

获取源码

首先,我们拉一份最新的源代码(笔者是2024.6.6日拉取的):

fetch --nohistory chromium

源码预处理

如果运行build,会生成许多生成的代码,因此我们不运行build。

然后,把干扰后续分析的.git目录删除。这次拉取仅仅从源文件的物理结构对chromium进行分析。

rd /s /q .git

然后删除testsdata、test等相关的文件,减少理解源码功能的干扰。

@echo off
setlocal enabledelayedexpansion

REM Define the root directory to start searching from
set "ROOT_DIR=src"

REM Find all directories named "test" under the root directory and delete them
for /r "%ROOT_DIR%" %%d in (test) do (
    if /i "%%~nxd"=="test" (
        echo Deleting: "%%d"
        rd /s /q "%%d"
    )
)

echo Deletion complete.

endlocal

还手动删除了一些数据

获取数据

目录体积一览

用space sniffer 可视化观察源码目录体积的情况,有个大概的印象:

从src根目录:可见体积最大的是third-party,占据了接近80%

放大我们后面会重点关注的src/content部分:

以及重点关注的thirdparty/blink:

文件类型聚类

接着,我们写个脚本,按文件类型,统计个数和大小:(File Types Analysis)

ExtensionFile CountTotal Size (bytes)
.h92392774105533
.cc787001011699744
[none]32369528603110
.js22251268799787
.sha121563863072
.c18014321187291
.py17853193770487
.cpp15631342358247
.html1310777496984
.ts1229887919096
.txt10025163453438
.java969781780064
.pbtxt767314195049
.json7410272957548
.md622731809118
.go571572429888
.gn570320890844
.png5611102977493
.mm551944819979
.xtb5163323351125
.frag42057609282
.pm365849830859
.xml304635833237
.map295348570301
.vert27614519297
.idl27146330826
.rs233750053349
.proto21329426761
.mojom17996385653
.sample17543230720
.yaml17073040011
.in164311598760
.sh16406088675
.pl151712907535
.icon14441821459
.css13768287662
.csv135165891710
.pod132623668650
.svg128512072576
.rst11967395627
.comp11642427107
.td103442924563
.S91322159427
.gni8485068002
.chromium826634536
.cfg7486186795
.inc744292674669
.yml6601235700
.cmake6182809973
.asm60616150717
.sksl601638268
.ttf59426986702
.bazel5832224953
.pem5697965101
.hpp56633897254
.bzl5514452617
.dll536206950836
.s4893164768
.test4622524462
.a46091781731
.tmpl4591411432
.pdf427161248367
.utf842411190941
.cjs3993569046
.bin35296919280
.patch3512601932
.sql3431388571
.def3346722034
.m3312704565
.hh3273742006
.pyc3103421089
.gif3057698487
.rts294202898
.wav28410097254
.bat2821842961
.BUILD277472005
.vk271161213
.key264425547
.jpg25612667896
.en2465889240
.tq2431415868
.template238604356
.ucm22220039087
.exe220975639548
.tesc220938125
.pb211220387
.mk211545744
.toml208327721
.cs2053693035
.webp2034960153
.swift199885223
.php1951528709
.mjs1863113129
.star1782438276
.so17813949612
.rb166679869
.pyi144304030
.grdp1404163500
.grd1365951416
.plist133211718
.pdb13076857344
.tese127465412
.zip1207022009
.euc-kr1091966786
.ico1062780310
.m41022198456
.tpl102793106
.man101357309
.mdoc99324131
.idx9510188780
.pack911356462055
.rev911446336
.gz89127234439
.rc87168686
.conf85242049
.pydeps82137908
.dict82356797
.al8264043
.yapf816371
.dox80549790
.orig79130748
.current_version7714439
.175443936
.avif701305373
.expected68863150
.json5681213323
.jsx68109086
.diff66721048
.mock-http-headers634294
.ogg61591480
.info61172965
.ini5834332
.woff2581331069
.fbs57335138
.tcl57377715
.pxi57257149
.bdic57112934430
.vue57110081
.build55226201
.scss55192410
.kt54386835
.textpb5369376
.dsc5348662
.dart53344885
.hyb521762492
.nc51137573
.am51642858
.f511364188
.cmd5096767
.jst5099630
.2645054395740
.geom5044572
.include49199229
.woff49924084
.xhtml49515027
.texi491956440
.aff4913875810
.dic49154174446
.textproto482488935
.lock483109574
.tlb45525492
.settings4410278
.tcc44910592
.evt447131
.gradle4370306
.aidl4042663
.TXT40272529
.pyd406201920
.properties4019738
.eot401361708
.rchit407308
.storyboard37231466
.mp4371882958
.lds3623048
.ipynb36975712
.flags3430045
.mod3336815
.options331192
.pc3325004
.compute3330662
.jinja23166533
.pyl31699967
.typed31488
.lua31407540
.lib3033084384
.pbxproj30902205
.dot2966483
.strings2932513
.raw29384009
.modulemap29539586
.dic_delta29442796
.hxx27139938
.jpeg277161209
.jar2623377841
.dat2666069008
.j22639960
.es26980221
.enc26280997
.unitjs26418755
.ps12584450
.rules23820993
.errordata2323597
.inl23508913
.xsl23335774
.podspec23522317
.vcproj22539682
.cxx221156567
.mac2280583
.log21186461
.de21868870
.o2141389
.cur2156918
.wasm209476297
.hlsl2096103
.fragment2030580
.sln2090004
.manifest1914019
.ver199448
.bmp19641343
.webm191367036
.markdown19111988
.hjson1934354
.mesh1971472
.cipd_version182187
.var18194614
.exp18249790
.el1883197
.rgen1815726
.version1715636
.entitlements177073
.sum17124231
.tar17247808
.vcxproj17185018
.bazelrc1744017
.hlo17839360
.jinja1615027
.cnf1638464
.ac16288424
.BSD1620320
.bp161026851
.sb1545622
.asset1539079
.applescript149784
.dtd14493656
.meson144077
.bash1424521
.bnf148666
.cl1473704

src 一级目录信息提取:写一段python脚本,自动提取第一层目录的特征和readme:

接下来移步:Chroium 源码目录结构分析(2)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python Requests库详解

大家好,在现代网络开发中,与Web服务器进行通信是一项至关重要的任务。Python作为一种多才多艺的编程语言,提供了各种工具和库来简化这一过程。其中,Requests库作为Python中最受欢迎的HTTP库之一,为开发人员提供了简单而…

python实践笔记(一): 模块和包

1. 写在前面 最近在重构之前的后端代码,借着这个机会又重新补充了关于python的一些知识, 学习到了一些高效编写代码的方法和心得,比如构建大项目来讲,要明确捕捉异常机制的重要性, 学会使用try...except..finally&…

AI服务器相关知识

在当今社会,人工智能的应用场景愈发广泛,如小爱同学、天猫精灵等 AI 服务已深入人们的生活。随着人工智能时代的来临,AI 服务器也开始在社会各行业发挥重要作用。那么,AI 服务器与传统服务器相比,究竟有何独特之处&…

C-MAPSS数据集探索性分析

实验数据为商用模块化航空推进系统仿真C-MAPSS数据集,该数据集为NASA格林中心为2008年第一届预测与健康管理国际会议(PHM08)竞赛提供的引擎性能退化模拟数据集,数据集整体信息如下所示: 涡扇发动机仿真模拟模型如下图所示。 仿真建模主要针对…

【AI大模型】Transformers大模型库(五):AutoModel、Model Head及查看模型结构

目录​​​​​​​ 一、引言 二、自动模型类(AutoModel) 2.1 概述 2.2 Model Head(模型头) 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预…

写给大数据开发,如何去掌握数据分析

这篇文章源于自己一个大数据开发,天天要做分析的事情,发现数据分析实在高大上很多,写代码和做汇报可真比不了。。。。 文章目录 1. 引言2. 数据分析的重要性2.1 技能对比2.2 业务理解的差距 3. 提升数据分析能力的方向4. 数据分析的系统过程4…

计算机提示msvcp120.dll如何修复,7个不同方法分享

msvcp120.dll 是 Microsoft Visual C Redistributable 的一个关键组件,它包含了 C 运行时库,这些库对基于 Visual C 编写的应用程序至关重要。当应用程序运行时,msvcp120.dll 会被加载到内存中以提供必要的函数和类支持。 一、msvcp120.dll功…

springboot与flowable(2):流程部署

一、创建项目 创建springboot项目添加相关依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.…

Android安全开发之 Provider 组件安全

Android系统中的Content Provider组件是一种用于在不同应用之间共享数据的机制。它提供了一种安全、可控的方式&#xff0c;允许应用访问其他应用的数据。然而&#xff0c;如果Provider组件的安全措施没有得到妥善实现&#xff0c;则可能会导致严重的安全漏洞&#xff0c;例如数…

深入理解C语言:main函数的奥秘

在C语言中&#xff0c;main函数是每个程序的入口点&#xff0c;起着至关重要的作用。本文将深入探讨main函数的工作原理&#xff0c;包括其参数、返回值、以及如何从main启动程序的执行。通过实际代码示例&#xff0c;读者将更深入地理解main函数在C语言编程中的核心地位。 第一…

SQL自动发送邮件的方法有哪些?如何配置?

SQL自动发送邮件设置时的注意事项&#xff1f;邮件群发如何操作&#xff1f; 在现代企业中&#xff0c;自动化流程越来越普遍&#xff0c;SQL自动发送邮件作为其中一项重要功能&#xff0c;能够大大提高工作效率并简化数据管理流程。AokSend将介绍几种实现SQL自动发送邮件的方…

MySQL限制登陆失败次数配置

目录 一、限制登陆策略 1、Windows 2、Linux 一、限制登陆策略 1、Windows 1&#xff09;安装插件 登录MySQL数据库 mysql -u root -p 执行命令安装插件 #限制登陆失败次数插件 install plugin CONNECTION_CONTROL soname connection_control.dll;install plugin CO…

探索软件工程师在新能源汽车研发中的角色与贡献

随着全球对可持续发展的关注不断增加&#xff0c;新能源汽车的研发与应用成为了汽车行业的一个重要方向。作为软件工程师&#xff0c;参与新能源汽车研发不仅能够推动科技创新&#xff0c;还能为环保事业贡献力量。本文将深入探讨软件工程师在新能源汽车研发中的具体贡献、所需…

VISIO安装教程+安装包

文章目录 01、什么是VISIO&#xff1f;02、安装教程03、常见安装问题解析 01、什么是VISIO&#xff1f; Visio是由微软开发的流程图和图表绘制软件&#xff0c;它是Microsoft Office套件的一部分。Visio提供了各种模板和工具&#xff0c;使用户能够轻松创建和编辑各种类型的图…

佳能5DMARK IV mov视频覆盖的恢复方法

5DMARK IV算是佳能比较经典的一款摄像机&#xff0c;是佳能早期使用MOV的摄像机之一&#xff0c;MOV是当初佳能高端机的象征&#xff0c;当然现在佳能已经不在通过MOV和MP4来区分硬件级别了。下边这个案例是文件拍摄时断电&#xff0c;结果变成0字节&#xff0c;然后覆盖了部分…

C语言最终讲:预处理详解

C语言最终讲&#xff1a;预处理详解 1.预定义符号2.#define定义常量3.#define定义宏4.带有副作用的宏参数5.宏替换的规则6.宏和函数的对比6.1宏的优势6.1.1\符号 6.2宏的劣势 7.#和##7.1#运算符7.2##运算符 8.命名约定9.#undef10.命令行定义11.条件编译12.头文件的包含12.1本地…

超详细 | 使用Nexus搭建私服 (带代码演示)

为什么需要搭建私有仓库&#xff1f; 在企业开发的过程中&#xff0c;不是所有公司都能直接访问外网。在这种情况下&#xff0c;就需要在局域网内找一台有外网访问权限的服务器&#xff0c;搭建Nexus私服仓库&#xff0c;开发人员连接到这台私服上&#xff0c;通过搭建的Nexus…

【学习笔记】finalshell上传文件夹、上传文件失败或速度为0

出现标题所述的情况&#xff0c;大概率是finalshell上传文件的过程中的权限不够。 可参照&#xff1a;Finalshell上传文件失败或者进度总为百分之零解决方法 如果不成功&#xff0c;建议关闭客户端重试。 同时建议在设置finalshell的ssh连接时根据不同用户设置多个连接&#xf…

RAG vs Fine-Tuning 微调哪种大模型(LLM)技术更好?

数据科学和机器学习的研究人员和从业者都在不断探索创新策略来增强语言模型的能力。在众多方法中&#xff0c;出现了两种突出的技术&#xff0c;即检索增强生成 (RAG)和微调。本文旨在探讨模型性能的重要性以及 RAG 和微调策略的比较分析。 模型性能在 NLP 中的重要性 增强用…

LinkedList详解(含数据结构动画演示)

目录 LinkedList详解1、LinkedList的继承体系2、LinkedList的构造函数3、LinkedList的add(E e)方法4、LinkedList的Node节点5、双向链表的概念和Node节点的详细解释6、LinkedList的add(E e)方法梳理7、LinkedList的getXXX方法8、LinkedList的removeXXX方法①、removeFirst()方法…