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

获取源码

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

fetch --nohistory chromium

源码预处理

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

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

rd /s /q .git

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

@echo off
setlocal enabledelayedexpansionREM 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.rhkb.cn/news/348690.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker拉取镜像失败超时的解决方法,docker配置国内镜像源

更换国内源 创建或修改 /etc/docker/daemon.json 文件 安装docker后一般只有 /etc/docker 这个目录 下面并没有 daemon.json 文件 我们直接创建 : vim /etc/docker/daemon.json {"registry-mirrors" : ["https://registry.docker-cn.com"…

【redis】redis事务

目录 Redis事务四个命令redis事务特性redis事务执行原理 Redis 事务的使用基本使用watch 监控watch 实现原理补充 Redis事务 Redis事务是一种将多个命令打包成一个单独操作的机制,它保证了在执行这些命令期间,其他命令无法插入。 四个命令 Redis事务通…

基于Java+SpringBoot制作一个软考助手答题小程序

基于Java+SpringBoot制作一个软考小助手考试答题小程序。其中系统前端功能包括注册登录、公告通知、考试答题、视频课程、考试记录、题库、题目评论、错题统计、我的收藏和用户信息管理模块;系统后台功能包括用户管理、题库管理、答题管理、学习视频管理以及系统管理模块。 摘…

VRRP基础配置(华为)

#交换设备 VRRP基础配置 VRRP (Virtual Router Redundancy Protocol) 全称是虚拟路由规元余协议,它是一种容错协议。该协议通过把几台路由设备联合组成一台虚拟的路由设备,该虚拟路由器在本地局域网拥有唯一的一个虚拟 ID 和虚拟 IP 地址。实际上&…

线程池前置知识

并发和并行 并发是指在单核CPU上,多个线程占用不同的CPU时间片。线程在物理上还是串行执行的,但是由于每个线程占用的CPU时间片非常短(比如10ms),看起来就像是多个线程都在共同执行一样,这样的场景称作并发…

Spring对事务的支持

一、事务 事务防止进行操作时,数据库里面的数据丢失。 二、Spring事务注解方式 注解方式:在配置文件中配置事务管理器,利用注解,管理事务。 实例 银行转账:一个账户向另一个账户转账。 1)先在数据库my…

UE4/UE5像素流送云推流|程序不稳定、弱网画面糊怎么办?

看到不少反馈说像素流送技术在实际的应用中,存在一些问题,比如程序崩溃、画面模糊等。本文将探讨这些问题,并介绍点量云流软件提供了哪些有效的解决方案。 常见的像素流送技术问题 画面质量问题: 当快速操作UE模型或初次启动像素…

LVS – NAT 模式集群构建

目录 1 环境准备 1.1 准备四台服务器 1.2 IP与网关均按照下图配置 1.3 网卡配置 1.4 real server 安装 web服务 1.5 安装ipvsadm 管理工具 2 使用ipvsadm管理LVS 2.1 创建集群指定使用的算法 2.2 添加真实服务器指定工作原理 2.3 查看是否正确创建集群 2.4 开启FORWARD路由转发…

专项测试——web测试

1、web测试的总体策略 2、web测试的范围 功能性能界面安全性兼容性DB文档 2.1 功能测试 功能测试主要从链接、表单、cookie、设计语言、数据库、文件上传等方面进行。 2.1.1 链接 2.1.2 表单 2.1.3 cookie cookie是什么? 服务器发送到用户浏览器并保存在用户本…

Lecture2——最优化问题建模

一,建模 1,重要性 实际上,我们并没有得到一个数学公式——通常问题是由某个领域的专家口头描述的。能够将问题转换成数学公式非常重要。建模并不是一件容易的事:有时,我们不仅想找到一个公式,还想找到一个…

Windows搭建nacos集群

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。 下载地址:Tags alibaba/nacos GitHub 链接:百度网盘 请输入提取码 提取码:8888 解压文件夹 目录说明&am…

Vue3中的常见组件通信之`$refs`、`$parent`

Vue3中的常见组件通信之$refs、$parent 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-mod…

webp2jpg网页在线图片格式转换源码

源码介绍 webp2jpg-免费在线图片格式转化器, 可将jpeg、jpg、png、gif、 webp、svg、ico、bmp文件转化为jpeg、png、webp、webp动画、gif文件。 无需上传文件,本地即可完成转换! 源码特点: 无需上传,使用浏览器自身进行转换批量转换输出we…

set与map的详细封装步骤

目录 一.set与map在STL中的源码 二.修改红黑树 1.插入与查找时的比较方式 2.插入时的返回值 3.补充成员函数 三.封装set与map 1.迭代器的实现 2.函数接口 3.map中的operator[] 四.完整代码 set.h map.h RBTree.h 一.set与map在STL中的源码 想要简单实现set与map 需…

【x264】变换量化模块的简单分析

【x264】变换量化模块的简单分析 1. 变换量化1.1 变换(transform)1.2 量化(quant) 2. 编码入口(x264_macroblock_encode)2.1 内部编码(macroblock_encode_internal)2.1.1 SKIP模式2.…

多源最短路径算法 -- 弗洛伊德(Floyd)算法

1. 简介 Floyd算法,全名为Floyd-Warshall算法,亦称弗洛伊德算法或佛洛依德算法,是一种用于寻找给定加权图中所有顶点对之间的最短路径的算法。这种算法以1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德的名字命名。 2. 核心思…

从报名到领证:软考初级【信息系统运行管理员】报名考试全攻略

本文共计9991字,预计阅读33分钟。包括七个篇章:报名、准考证打印、备考、考试、成绩查询、证书领取及常见问题。 一、报名篇 报名条件要求: 1.凡遵守中华人民共和国宪法和各项法律,恪守职业道德,具有一定计算机技术…

centos7.9部署k8s的几种方式

文章目录 一、常见的k8s部署方式1、使用kubeadm工具部署2、基于二进制文件的部署方式3、云服务提供商的托管 Kubernetes 服务4、使用容器镜像部署或自动化部署工具 二、使用kubeadm工具部署1、硬件准备(虚拟主机)2、环境准备2.1、所有机器关闭防火墙2.2、…

sizeof和strlen

1.sizeof和strlen的对比 1.1sizeof sizeof是计算变量所占内存空间大小的,单位是:字节 如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。 sizeof只关注占用内存空间的大小,不在乎内存中存放的是什么数据 …

vuInhub靶场实战系列--Kioptrix Level #4

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶场信息1.2 靶场配置 二、信息收集2.1 主机发现2.1.1 netdiscover2.1.2 arp-scan主机扫描 2.2 端口扫描2.3 指纹识别2.4 目…