FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
gitdb/gitdb/test/performance/test_stream.py at master · gitpython-developers/gitdb · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
This repository was archived by the owner on Jul 26, 2026. It is now read-only.
gitpython-developers
/
gitdb
Public archive
Notifications
You must be signed in to change notification settings
Fork
68
Star
227
Code
Issues
6
Pull requests
0
Discussions
Actions
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
gitdb
/
gitdb
/
test
/
performance
/
test_stream.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
106 lines (85 loc) · 3.55 KB
Breadcrumbs
gitdb
/
gitdb
/
test
/
performance
/
test_stream.py
Copy path
File metadata and controls
106 lines (85 loc) · 3.55 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# Copyright (C) 2010, 2011 Sebastian Thiel (byronimo@gmail.com) and contributors
#
# This module is part of GitDB and is released under
# the New BSD License: https://opensource.org/license/bsd-3-clause/
"""Performance data streaming performance"""
from
gitdb
.
test
.
performance
.
lib
import
TestBigRepoR
from
gitdb
.
db
import
LooseObjectDB
from
gitdb
import
IStream
from
gitdb
.
util
import
bin_to_hex
,
remove
from
gitdb
.
fun
import
chunk_size
from
time
import
time
import
os
import
sys
from
gitdb
.
test
.
lib
import
(
make_memory_file
,
with_rw_directory
,
)
#{ Utilities
def
read_chunked_stream
(
stream
):
total
=
0
while
True
:
chunk
=
stream
.
read
(
chunk_size
)
total
+=
len
(
chunk
)
if
len
(
chunk
)
<
chunk_size
:
break
# END read stream loop
assert
total
==
stream
.
size
return
stream
#} END utilities
class
TestObjDBPerformance
(
TestBigRepoR
):
large_data_size_bytes
=
1000
*
1000
*
50
# some MiB should do it
moderate_data_size_bytes
=
1000
*
1000
*
1
# just 1 MiB
@
with_rw_directory
def
test_large_data_streaming
(
self
,
path
):
ldb
=
LooseObjectDB
(
path
)
string_ios
=
list
()
# list of streams we previously created
# serial mode
for
randomize
in
range
(
2
):
desc
=
(
randomize
and
'random '
)
or
''
print
(
"Creating %s data ..."
%
desc
,
file
=
sys
.
stderr
)
st
=
time
()
size
,
stream
=
make_memory_file
(
self
.
large_data_size_bytes
,
randomize
)
elapsed
=
time
()
-
st
print
(
"Done (in %f s)"
%
elapsed
,
file
=
sys
.
stderr
)
string_ios
.
append
(
stream
)
# writing - due to the compression it will seem faster than it is
st
=
time
()
sha
=
ldb
.
store
(
IStream
(
'blob'
,
size
,
stream
)).
binsha
elapsed_add
=
time
()
-
st
assert
ldb
.
has_object
(
sha
)
db_file
=
ldb
.
readable_db_object_path
(
bin_to_hex
(
sha
))
fsize_kib
=
os
.
path
.
getsize
(
db_file
)
/
1000
size_kib
=
size
/
1000
print
(
"Added %i KiB (filesize = %i KiB) of %s data to loose odb in %f s ( %f Write KiB / s)"
%
(
size_kib
,
fsize_kib
,
desc
,
elapsed_add
,
size_kib
/
(
elapsed_add
or
1
)),
file
=
sys
.
stderr
)
# reading all at once
st
=
time
()
ostream
=
ldb
.
stream
(
sha
)
shadata
=
ostream
.
read
()
elapsed_readall
=
time
()
-
st
stream
.
seek
(
0
)
assert
shadata
==
stream
.
getvalue
()
print
(
"Read %i KiB of %s data at once from loose odb in %f s ( %f Read KiB / s)"
%
(
size_kib
,
desc
,
elapsed_readall
,
size_kib
/
(
elapsed_readall
or
1
)),
file
=
sys
.
stderr
)
# reading in chunks of 1 MiB
cs
=
512
*
1000
chunks
=
list
()
st
=
time
()
ostream
=
ldb
.
stream
(
sha
)
while
True
:
data
=
ostream
.
read
(
cs
)
chunks
.
append
(
data
)
if
len
(
data
)
<
cs
:
break
# END read in chunks
elapsed_readchunks
=
time
()
-
st
stream
.
seek
(
0
)
assert
b''
.
join
(
chunks
)
==
stream
.
getvalue
()
cs_kib
=
cs
/
1000
print
(
"Read %i KiB of %s data in %i KiB chunks from loose odb in %f s ( %f Read KiB / s)"
%
(
size_kib
,
desc
,
cs_kib
,
elapsed_readchunks
,
size_kib
/
(
elapsed_readchunks
or
1
)),
file
=
sys
.
stderr
)
# del db file so we keep something to do
ostream
=
None
# To release the file handle (win)
remove
(
db_file
)
# END for each randomization factor
Back
|
FazBrowse Home
|
New Git URL